专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VB Dotnet

动态加载控件组和定义控件组事件解决方法

发布时间:2011-06-23 16:03:07 文章来源:www.iduyao.cn 采编人员:星星草
动态加载控件组和定义控件组事件
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 对象就是
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: