0

很快,我请求帮助来读取用户控件内的文本框的属性。
访问用户控件内部的控件 正如我所建议的那样,我创建了一个名为 xTextBox 的非常简单的公共类,并将其用作我的用户控件中的文本框。那工作很好。

Public Class xTextBox
    Inherits TextBox
End Class

现在我可以简单地从包含该用户控件的主程序中读取该 xTextbox 上的属性:

Dim s As Integer = myUserControl.xTextBox1.SelectionStart

但是现在的问题是我无法在主程序中获取该文本框的事件。也许我可以声明'Shadows Event TextChanged ...'等,但我需要在用户控件所在的不同情况下使用更多事件,并且故意提高每个事件在实际编程方面看起来并不优雅。

如何将那些 xTextbox 的事件获取到主程序?

4

1 回答 1

4

如果您的新用户控件只有一个控件并继承文本框,那么您可以像平常一样使用属性编辑器或手动使用 AddHandler 附加事件。如果事情比这更复杂,我可能会创建一个面板并将您的新文本框放入其中,那么访问事件会容易得多。

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
于 2012-12-23T00:40:59.080 回答