动态加载控件组和定义控件组事件

lxq19851204 2011-11-17 03:55:38
VB。NET的控件组事件和VB6.0有很多不一样,有请哪个高手帮我讲解一下。

怎么定义控件组的事件?比如说我的控件组有CLICK和DBLCLICK,CHANGE事件。
下面是我定义控件的双击事件,我想单击事件应该放在哪里呢?
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
...全文
86 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
lxq19851204 2011-11-17
  • 打赏
  • 举报
回复
哎啊,了解了,谢谢LS的3位大大~~
阿非 2011-11-17
  • 打赏
  • 举报
回复
 Dim lbl As Label  = DirectCast(sender, Label)
gxingmin 2011-11-17
  • 打赏
  • 举报
回复
根据name来判断是那个控件
'单击事件
   Private Sub Label1_Click(sender As System.Object, e As System.EventArgs)
dim c as control = sender
dim i as string= c.Name.Substring(5)
'i就是第几个
End Sub

阿非 2011-11-17
  • 打赏
  • 举报
回复
sender 对象就是
lxq19851204 2011-11-17
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 machong8183 的回复:]
让你老在vb版,不会了吧
呵呵
[/Quote]
呵呵,VB混久了,VB.NET用法不太懂,要向各位大虾先学习下~~
lxq19851204 2011-11-17
  • 打赏
  • 举报
回复
那在CLICK中,怎么判断是第几个控件呢?
比如我掉了第3个控件,目的是使第1个控件的值为1,怎么弄?
水猿兵团五哥 2011-11-17
  • 打赏
  • 举报
回复
让你老在vb版,不会了吧
呵呵
水猿兵团五哥 2011-11-17
  • 打赏
  • 举报
回复
AddHandler label1.Click, AddressOf Label1_Click '单击事件
AddHandler label1.DoubleClick, AddressOf Label1_DoubleClick '双击事件
AddHandler label1.TextChanged, AddressOf Label1_TextChanged 'TextChanged事件

呵呵,就是这样简单,只是你不熟而已
gxingmin 2011-11-17
  • 打赏
  • 举报
回复

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

16,554

社区成员

发帖
与我相关
我的任务
社区描述
VB技术相关讨论,主要为经典vb,即VB6.0
社区管理员
  • VB.NET
  • 水哥阿乐
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧