很快我就寻求帮助来读取usercontrol里面的文本框的属性 Accessing to control inside of usercontrol 正如我所建议的那样,我创建了一个名为xTextBox的非常简单的公共类,并在我的usercontrol中将其用作文本框。工作正常。
Public Class xTextBox
Inherits TextBox
End Class
现在我可以从主程序中读取包含该usercontrol的xTextbox上的属性:
Dim s As Integer = myUserControl.xTextBox1.SelectionStart
但现在是一个问题,我无法在主程序中获取该文本框的事件。 也许我可以声明'Shadows Event TextChanged ...'等等,但是我会在用户控制的不同情况下需要更多的事件,并且故意提高每一个事件在实际编程方面看起来并不优雅。
如何将xTextbox的事件发送到主程序?
答案 0 :(得分:4)
如果您的新UserControl只有一个控件和Inherits TextBox,那么您可以使用Property Editor或者使用AddHandler手动附加正常的事件。如果事情比这更复杂,我可能会创建一个面板并将新的TextBox放入其中,那么访问这些事件将会容易得多。
Public Class myUserControl
Inherits TextBox
End Class
Public Class Form1
Public Sub New()
InitializeComponent()
AddHandler MyUserControl1.TextChanged, AddressOf MyUserControl_textChanged
End Sub
Private Sub MyUserControl_textChanged(sender As Object, e As EventArgs)
Throw New NotImplementedException
End Sub
End Class
或者,如果您的UserControl中包含多个自定义文本框,您可以创建自定义事件并在UserControl上的常见TextChanged事件中触发,并在主窗体中处理它。
Public Class UserControl1
Public Event TextChange(sender As Object, e As EventArgs)
Private Sub MyUserControl_TextChanged(sender As System.Object, e As System.EventArgs) Handles MyUserControl1.TextChanged, MyUserControl2.TextChanged
RaiseEvent TextChange(sender, e)
End Sub
End Class
Public Class Form1
Public Sub New()
InitializeComponent()
End Sub
Private Sub UserControl11_TextChange(sender As System.Object, e As System.EventArgs) Handles UserControl11.TextChange
MsgBox(CType(sender, TextBox).Name, MsgBoxStyle.Information)
End Sub
End Class