【发布时间】:2014-02-09 14:30:08
【问题描述】:
我正在使用 vb.net winforms 创建一个包含用户控件的应用程序,我也在创作用户控件。
用户控件名为activate1
包含用户控件(和其他内容)的表单被命名为 form1
目前我正在尝试在激活 1 上的蒙版文本框完成时启用 form1 上的按钮
我尝试这样做:
Private Sub MaskedTextBox1_TextChanged(sender As Object, e As EventArgs) Handles MaskedTextBox1.TextChanged
If MaskedTextBox1.Text.Count = 34 Then
Form1.SimpleButton1.Enabled = True
Else
Form1.SimpleButton1.Enabled = False
End If
End Sub
但是我在运行应用程序时收到错误“表单在从默认实例构造期间引用自身,这导致了无限递归”所以我尝试了
Private Sub MaskedTextBox1_TextChanged(sender As Object, e As EventArgs) Handles MaskedTextBox1.TextChanged
If MaskedTextBox1.Text.Count = 34 Then
me.SimpleButton1.Enabled = True
Else
me.SimpleButton1.Enabled = False
End If
End Sub
但是这个标志并且不允许编译,因为我指的是用户控件中不存在的按钮
我怎样才能做到这一点
【问题讨论】:
-
您可以在 UserControl 上添加一个 RT 属性,允许您传递表单引用,或者尝试在 usercontrol 上使用 .FindForm。总的来说,听起来有些东西最好由一个班级来解决。
-
我根据stackoverflow.com/questions/18191450/…的建议选择了usercontrol
-
你能解释一下我尝试 Dim myform As Form = Form1.SimpleButton1.FindForm() 时 findform 的语法,它似乎不起作用,其他一切都将语法标志设置为关闭
-
您可以从 Usercontrol 内部执行此操作:
frm = Me.FindForm。那么 UC 可以参考表单控件:frm.Button1.Enabled。为按钮引用设置 UC 道具可能比假设它会在那里更好。