vb.net - 有没有办法在程序运行时创建 Onclick 事件?

标签 vb.net

我希望当我点击链接标签时,它会给我文本框的名称,该文本框位于名为 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

` 这是我的代码的 gif enter image description here

最佳答案

我们需要两个更改:将文本框设置为标签的 .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/

相关文章:

.net - 如何获得来自主音频 channel 的当前声音的响度?

c# - 在特定位置插入 XML 节点

javascript - 如何将 html5 Canvas 图像保存到 mssql varbinary(max) 字段?

sql - VB - 如何在 ListView 的顶部动态添加项目

c# - 算术运算导致溢出。 (添加整数)

asp.net - 除非浏览器完全关闭,否则应用程序不会注销 ASP.NET – VB

sql - 在 VB.NET 中嵌入 SQL 的最佳方式是什么

c# - 如何正确舍入和格式化小数?

regex - 使用正则表达式替换换行符

vb.net - Visual Basic 自动售货机