首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > VB Dotnet >

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

2012-01-23 
动态加载控件组和定义控件组事件VB。NET的控件组事件和VB6.0有很多不一样,有请哪个高手帮我讲解一下。怎么定

动态加载控件组和定义控件组事件
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 SubEnd 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 对象就是

热点排行