所有控件(也是自定義控件)都具有屬性Controls
,通過它您可以訪問該控件的(子)控件。現在你可以通過調用.Item(key)
方法來檢索你的文本框。然後你可以在你的表單或類中爲它分配一個事件處理程序。
Dim key As String = "textBoxA" 'Or simply the name of that TextBox in your CustInfo
Dim textboxA As TextBox = CustInfo1.Controls.Item(key)
AddHandler textBoxA.TextChanged, AddressOf mytextchangedhandler
如果這一mytextchangedhandler
處理該文本框TextChanged事件。
就我個人而言,我不太喜歡這種方法,因爲您依賴於瞭解TextBox的名稱或您的usercontrol的控件列表中的索引。
我肯定會選擇在你的用戶控件上創建自己的事件。甚至做起來也很容易!下面如何做到這一點。在你的用戶控件的代碼後面,你必須添加一個事件聲明:
Event MyTextBoxChanged(sender As Object, e As EventArgs)
現在,我們必須提高它,爲此,我們在你的用戶控件執行TextChanged
事件TextBoxA
的(如你解釋你想做的事):
Private Sub TextBoxA_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBoxA.TextChanged
RaiseEvent MyTextBoxChanged(Me, EventArgs.Empty)
End Sub
現在如下,我們可以簡單地實現你的表格此事件(MyTextBoxChanged
):
Private Sub CustInfo1_MyTextBoxChanged(sender As System.Object, e As System.EventArgs) Handles CustInfo1.MyTextBoxChanged
' Do something
End Sub
顯然我們仍然需要獲得更新的文本,現在我們可以創建我們自己的EventArgs,它將爲我們提供新的(和/或舊的值),因爲您會希望擁有。我們只可以繼承System.EventArgs
類,並添加一些屬性(例如保存舊的文本值,並保存新的文本值的屬性NewText
屬性OldText
):
Public Class MyEventArgs
Inherits System.EventArgs
Private _OldText As String
Public ReadOnly Property OldText() As String
Get
Return _OldText
End Get
End Property
Private _NewText As String
Public ReadOnly Property NewText() As String
Get
Return _NewText
End Get
End Property
Public Sub New(oldText As String, newText As String)
_OldText = oldText
_NewText = newText
End Sub
End Class
現在我們要改變的事件定義並提高使用MyEventArgs
:
Event MyTextBoxChanged(sender As Object, e As MyEventArgs)
Private Sub TextBoxA_TextChanged(sender As System.Object, e As System.EventArgs) Handles TextBoxA.TextChanged
RaiseEvent MyTextBoxChanged(Me, New MyEventArgs(TextBoxA.Text))
End Sub
,改變你的形式實現:
Private Sub CustInfo1_MyTextBoxChanged(sender As System.Object, e As MyEventArgs) Handles CustInfo1.MyTextBoxChanged
MessageBox.Show(e.Text)
End Sub
有關活動的更多信息可以在我們最喜歡的地方找到MSDN。
您必須從CustInfo控件中捕獲該事件,然後調用ServiceLocation控件上的某個方法。 (您可能需要在控件中創建自己的「已更改」事件。) – Styxxy
是否可以通過custInfo控件調用A類中的函數 – user1516790