16,553
社区成员
发帖
与我相关
我的任务
分享
Public Class UserControl1
'新建一个VB.net窗口程序,在里面添加一个用户控件:控件名为默认的UserControl1.vb
'复制这些代码到UserControl1.vb代码设计器里.
'打开UserControl1.vb设计面板,添加一个TextBox1和Button1.然后选择菜单栏里的 生成->重新生成解决方案
'这时你可在Form1.vb设计面板工具栏里找到UserControl1,拖一个到Form1.vb设计面板.
'使用方法是,按每个方法注解或去除注解来运行程序.
'程序运行后,你只要在那个TextBox里打字就可以看出效果
#Region "AddHandler的使用方法"
Sub TB1_TextChanged() '定义一个函数过程
BackColor = Color.Red 'UserControl1的底色变成红色
End Sub
Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' 添加回调函数 当回调函数被触发时 下面这个SUB或FUNCTION也被触发
AddHandler TextBox1.TextChanged, AddressOf TB1_TextChanged
End Sub
'''''上面的过程相当于这个过程,没什么吊用!
'Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
' TB1_TextChanged()
'End Sub
#End Region
#Region "AddHandler跟RemoveHandler的使用方法"
''添加RemoveHandler功能 运行先点断开按钮再输入看看效果,然后重开试着不点断开再输入看看
'Sub TB1_TextChanged(sender As Object, e As EventArgs) '注意这里面加了参数,因为不加的话RemoveHandler会报错
' BackColor = Color.Red
'End Sub
'Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
' Me.Width = 500
' Button1.Text = "断开和回调函数的连接不再使用"
' Button1.Width = 240
' '----------------------------以上只是提示跟内容无关---------------------------
' ' 添加回调函数 当回调函数被触发时 下面这个SUB或FUNCTION也被触发
' AddHandler TextBox1.TextChanged, AddressOf TB1_TextChanged
'End Sub
''通过Button1我们可以 断开和回调函数的连接不再使用 这时就好像有点吊用了!
'Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
' RemoveHandler TextBox1.TextChanged, AddressOf TB1_TextChanged
'End Sub
''''''上面的过程相当于这个过程!
''Sub TB1_TextChanged() '注意这里面不用加参数,因为没有参与绑定事件
'' BackColor = Color.Red
''End Sub
''Dim comp As Boolean
''Private Sub UserControl1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
'' Me.Width = 500
'' Button1.Text = "断开和回调函数的连接不再使用"
'' Button1.Width = 240
'' '----------------------------以上只是提示跟内容无关---------------------------
'' ' 添加回调函数 当回调函数被触发时 下面这个SUB或FUNCTION也被触发
'' comp = True
''End Sub
''Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
'' comp = False
''End Sub
''Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
'' If comp = True Then
'' TB1_TextChanged()
'' End If
''End Sub
#End Region
'总结AddHandler是个绑定事件的使用过程
#Region "Public Event和RaiseEvent的使用方法"
''下面是添加触发事件 也叫自定义事件触发 用处是让用户控件的子控件的个别事件能在用户控件里触发
'Public Event TB1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) '添加一个自定义事件
''-------------注意以上是带参数的,参数要跟绑定事件的参数一样,可直接复制原参数到()里-------------
''-------------再有就是要用Public Event,不然Form1.vb里看不到事件-------------
''在TextBox1.TextChanged触发时,同时也触发自定义事件.
'Private Sub TextBox1_TextChanged(sender As Object, e As EventArgs) Handles TextBox1.TextChanged
' RaiseEvent TB1_TextChanged(sender, e) '自定义事件被触发
'End Sub
#End Region
''''''将以下代码放到Form1.vb里,运行程序,TextBox里打字试试看.
''Public Class Form1
'' Private Sub TB1_TextChanged(ByVal sender As Object, ByVal e As EventArgs) Handles UserControl11.TB1_TextChanged
'' BackColor = Color.Green
'' End Sub
''End Class
''''''总结Public Event和RaiseEvent是添加子控件事件添加到主控件自定义事件里的待触发定义
End Class
WithEvents oldTextBox As TextBox = UserControl11.TextBox1
Private Sub oldTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles oldTextBox.KeyPress
BackColor = Color.Green
End Sub
Public Class Form1
WithEvents oldTextBox As New TextBox
Private Sub oldTextBox_KeyPress(sender As Object, e As KeyPressEventArgs) Handles oldTextBox.KeyPress
BackColor = Color.Green
Text = "成功"
End Sub
Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
oldTextBox = UserControl11.TextBox1
End Sub
End Class