我希望当我点击链接标签时,它会给我文本框的名称,该文本框位于名为 AA 的变量的同一行中 `
Dim serial As Integer = 1
Public Function addnewline()
Dim lbl As New System.Windows.Forms.LinkLabel
Dim txt As New System.Windows.Forms.TextBox
' add label
Me.Controls.Add(lbl)
lbl.Top = serial * 27
lbl.Left = 100
lbl.Text = Me.serial
lbl.Name = "lbl" & Me.serial
' add textbox
Me.Controls.Add(txt)
txt.Top = serial * 27
txt.Left = 200
txt.Height = 500
txt.Width = 100
txt.TextAlign = HorizontalAlignment.Center
txt.Text = "text" & Me.serial
txt.Name = "txt" & Me.serial
serial += 1
Return lbl
Return txt
End Function
最佳答案
我们需要两个更改:将文本框设置为标签的 .Tag
属性,并为点击事件使用 AddHandler
。当我在这里时,我还将修复一些其他没有意义的事情(只允许返回一次,甚至不需要)并减少闪烁:
Dim serial As Integer = 1
Public Sub addnewline()
'Textbox
Dim txt As New System.Windows.Forms.TextBox
txt.Top = serial * 27
txt.Left = 200
txt.Height = 500
txt.Width = 100
txt.TextAlign = HorizontalAlignment.Center
txt.Text = "text" & Me.serial
txt.Name = "txt" & Me.serial
'Label
Dim lbl As New System.Windows.Forms.LinkLabel
lbl.Top = serial * 27
lbl.Left = 100
lbl.Text = Me.serial
lbl.Name = "lbl" & Me.serial.ToString()
' Next two lines are new
lbl.Tag = txt
AddHandler lbl.Click, AddressOf labelClick
Me.SuspendLayout()
Me.Controls.Add(lbl)
Me.Controls.Add(txt)
Me.ResumeLayout()
serial += 1
End Sub
Public Sub labelClick(sender As Control, e As EventHandler)
Dim txt As TextBox = TryCast(sender.Tag, TextBox)
If txt IsNot Nothing Then
AA.Text = txt.Name
End If
End Sub
既然我在这里,你真的应该打开 Option Strict!
关于vb.net - 有没有办法在程序运行时创建 Onclick 事件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74538818/