如何为 VB.NET 中以编程方式创建的对象创建事件处理程序?

问题描述 投票:0回答:3

假设我有一个动态创建的对象。例如,假设我创建一个名为“MyButton”的按钮:

Dim MyButton as New Button()
MyButton.Name = "MyButton"

如何创建“点击”事件?如果它是静态创建的,我可以创建一个函数:

Private Sub MyButton_Click(ByVal sender as system.object, ByVal e As System.EventArgs) Handles.

如何为 MyButton 实现事件处理程序?

.net vb.net
3个回答
38
投票

您可以这样使用

AddHandler
AddressOf

Dim MyButton as New Button()
MyButton.Name = "MyButton"
AddHandler MyButton.Click, AddressOf MyButton_Click

MSDN 文档中有更多信息:


19
投票

使用较新版本的 VB.NET,您可以内联使用 lambda 表达式而不是整个方法(如果您愿意)

Dim MyButton as New Button()
MyButton.Name = "MyButton"
AddHandler MyButton.Click, Sub(sender2, eventargs2)
                               'code to do stuff
                               'more code to do stuff
                           End Sub

0
投票

Sub LoadBoth(ByVal R1C0 作为整数) Dim newbox 作为 TextBox,ThisIndex 作为 Integer Panel1.Controls.Clear() 它的宽度 = Val(Textwidth.Text) 它的Heigt = Val(TextHeigt.Text) 间隙左 = Val(TextLeftGap.Text) 顶部间隙 = Val(TextTopGap.Text) GapCol = Val(TextGapX.Text) GapRow = Val(TextGapY.Text) NumCols = Val(TextCols.Text) 行数 = Val(TextRow.Text) ' BTRVER() 作为按钮,BTNHOR() 作为按钮 BTNAll = 新按钮 BTNAll.Location = 新点(13, 119) BTNAll.Size = 新绘图.Size(其宽度 * 2, 它的高度 * 2) AddHandler BTNAll.MouseMove,AddressOf AllSumHere AddHandler BTNAll.Click,AddressOf AllSumHere BTNAll.Text =“SUM” BTNAll.Visible = True BTNAll.BackColor = 颜色.棕色 Me.Controls.Add(BTNAll) ReDim BTRVER(行数) Panelver.Controls.Clear() 变暗 newBTN 作为按钮 Dim VarRow 作为整数 = 0 对于 VarRows = 1 到 NumRows newBTN = 新按钮 newBTN.Size = 新绘图.Size(itswidth,ItsHeigt) newBTN.Location = 新点(gapLeft, GapTop + (ItsHeigt + GapRow) * (VarRows - 1)) newBTN.Name = "B" & VarRows newBTN.Text = VarRows ' newbox.Name AddHandler newBTN.MouseMove,AddressOf BTNRowCLICK '2 AddHandler newBTN.Click, AddressOf BTNRowCLICK '2 BTRVER(VarRows) = newBTN Panelver.Controls.Add(newBTN) 下一个 Panelver.Height = (GapRow + ItsHeigt) * Val(TextRow.Text) + 10 '''''''''''''''''''''''''''' Dim VarCol 作为整数 暗淡 newHor 作为按钮 ReDim BTNHOR(NumCols) Panelhori.Controls.Clear() 对于 VarCol = 1 到 NumCols newHor = 新按钮 newHor.Size = New Drawing.Size(itswidth,ItsHeigt) newHor.Location = 新点(gapLeft + (itswidth + Val(TextGapX.Text)) * (VarCol - 1), GapTop) newHor.Name = "B" & VarCol newHor.Text = VarCol ' newbox.Name AddHandler newHor.MouseHover, AddressOf BTNColCLICK '2 AddHandler newHor.Click,AddressOf BTNColCLICK '1 BTNHOR(VarCol) = newHor Panelhori.Controls.Add(newHor) 下一个 Panelhori.Width = (GapCol + 它的宽度) * Val(TextCols.Text) + 10 ''''''''''''''''''''''''''''' ReDim runtext(NumRows * NumCols) 对于 VarRows 作为整数 = 1 到 NumRows 对于 VarCol = 1 到 NumCols newbox = 新文本框 newbox.Size = New Drawing.Size(itswidth,ItsHeigt) 如果 R1C0 = 1 那么 ThisIndex = (VarCol - 1) * NumRows + VarRows ' 对于 VarRows 否则如果 R1C0 = 0 则 ThisIndex = (VarRows - 1) * NumCols + VarCol '对于 VarCol 结束如果 newbox.Location = 新点(gapLeft + (itswidth + Val(TextGapX.Text)) * (VarCol - 1), GapTop + (ItsHeigt + GapRow) * (VarRows - 1)) newbox.Name = "T" & ThisIndex 'VarRows & "_" & VarCol newbox.Text = ThisIndex ' newbox.Name AddHandler newbox.TextChanged,AddressOf TextBox_TextChanged runtext(ThisIndex) = newbox runtext(ThisIndex).Multiline = True Panel1.Controls.Add(newbox) 下一个 下一个 Panel1.Width = (GapCol + 它的宽度) * Val(TextCols.Text) + 10 Panel1.Height = (GapRow + ItsHeigt) * Val(TextRow.Text) + 10 Me.Height = Panel1.Height + Panel1.Top + 100 Me.Width = Panel1.Width + Panel1.Left + 100 'Me.AutoScroll = True Me.Location = 新点(10, 10) 结束子

© www.soinside.com 2019 - 2024. All rights reserved.