VB。NET的控件组事件和VB6.0有很多不一样,有请哪个高手帮我讲解一下。
怎么定义控件组的事件?比如说我的控件组有CLICK和DBLCLICK,CHANGE事件。
下面是我定义控件的双击事件,我想单击事件应该放在哪里呢?
- VB.NET code
Public Class Form1 Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For i As Integer = 1 To 5 Dim lbl As Label = New Label lbl.Name = "Label " & CStr(i) lbl.Text = "Label " & CStr(i) lbl.BackColor = Color.Yellow lbl.Top = 90 lbl.Left = 100 * i lbl.Width = 90 lbl.Height = 100 lbl.Font = New Font(lbl.Font.Name = "Comic Sans", 18, lbl.Font.Style = FontStyle.Bold, lbl.Font.Unit = GraphicsUnit.Pixel) Me.Controls.Add(lbl) Next AddGenericClickHandler(Me, AddressOf Label1_DoubleClick) End Sub Private Sub AddGenericClickHandler(ByVal Parent As Control, ByVal Handler As EventHandler) For Each ctl As Control In Parent.Controls AddHandler ctl.DoubleClick, Handler Next AddHandler Parent.DoubleClick, Handler End Sub Private Sub Label1_DoubleClick(ByVal sender As Object, ByVal e As System.EventArgs) Handles Label1.DoubleClick If TypeOf sender Is Label Then Dim pos As Point = sender.Parent.PointToClient(Control.MousePosition) For Each ctl As Control In sender.Parent.Controls If TypeOf ctl Is Label And New Rectangle(ctl.Location, ctl.Size).Contains(pos) Then MsgBox(ctl.Name) End If Next End If End Sub End Class
------解决方案--------------------
- VB.NET code
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load .... .... AddHandler label1.Click, AddressOf Label1_Click '单击事件 AddHandler label1.DoubleClick, AddressOf Label1_DoubleClick '双击事件 AddHandler label1.TextChanged, AddressOf Label1_TextChanged 'TextChanged事件 End Sub '单击事件 Private Sub Label1_Click(sender As System.Object, e As System.EventArgs) End Sub '双击事件 Private Sub Label1_DoubleClick(sender As System.Object, e As System.EventArgs) End Sub 'TextChanged事件 Private Sub Label1_TextChanged(sender As System.Object, e As System.EventArgs) End Sub
------解决方案--------------------
AddHandler label1.Click, AddressOf Label1_Click '单击事件
AddHandler label1.DoubleClick, AddressOf Label1_DoubleClick '双击事件
AddHandler label1.TextChanged, AddressOf Label1_TextChanged 'TextChanged事件
呵呵,就是这样简单,只是你不熟而已
------解决方案--------------------
sender 对象就是