【问题标题】:vb.net dynamic link lablevb.net 动态链接标签
【发布时间】:2018-11-22 13:34:51
【问题描述】:

如何找出在 Visual Basic 上单击了哪个动态链接?我有一些根据数据集动态创建的 LinkLabels,我想打开一个包含来自该数据集的信息的新表单,但我需要知道如何根据单击的链接加载表单......下面的代码...... //该函数根据数据表中的行创建链接标签

Sub DynamicLabels()
    Dim i As Integer
    Dim x As Integer = 14
    Dim y As Integer = 50
    Dim tp As TabPage = tabControl1.TabPages(1)
    If db.HasConnection() Then
        If db.SQLDS IsNot Nothing Then
            db.SQLDS.Clear()
        End If
        db.RunQuery("SELECT c.courseSubj AS Subject, c.courseNum AS CourseNum, r.className AS ClassName, t.tName AS Professor
                    FROM course c, classRoom r, teacher t, classroom_student u, student s
                    WHERE c.courseId=r.course_id AND t.teacherId=r.teacher_id AND s.studentId=u.student_id AND u.classroom_id=r.classId AND s.sUsername='" & Login.Usr.Text & "' ")
        For i = 0 To db.SQLDS.Tables(0).Rows.Count - 1
            ReDim MyLabel(db.SQLDS.Tables(0).Rows.Count)
            y += 50
            With MyLabel(i)
                MyLabel(i) = New LinkLabel()
                MyLabel(i).Name = "linklabel" & i.ToString
                MyLabel(i).Location = New Point(x, y)
                MyLabel(i).Size = New Size(700, 40)
                MyLabel(i).Font = New Font("Microsoft Sans Serif", 14)
                MyLabel(i).Text = String.Format(CType(db.SQLDS.Tables(0).Rows(i).Item("Subject"), String) & " " & CType(db.SQLDS.Tables(0).Rows(i).Item("CourseNum"), String) & " " & CType(db.SQLDS.Tables(0).Rows(i).Item("ClassName"), String) & ": " & CType(db.SQLDS.Tables(0).Rows(i).Item("Professor"), String))
                AddHandler MyLabel(i).LinkClicked, AddressOf label_LinkClicked
            End With
            tp.Controls.Add(MyLabel(i))
        Next
    End If
End Sub

我想加载一个包含数据集中一些信息的新表单。

【问题讨论】:

  • 点击事件中的sender参数告诉你实例。将其转换为 LinkLabel。
  • 我需要用这些参数创建一个函数吗?我该怎么做?
  • 在您的点击事件处理程序中,只需像dim lbl as LinkLabel = ctype(sender, LinkLabel) 一样投射发件人,然后您就可以访问您设置的 Name() 属性...或者只是 dim labelname as string = directcast(sender, linklabel).name
  • 为什么是 LinkLabel?它们用于显示超链接、互联网 URL。普通的旧标签怎么样?

标签: vb.net linklabel


【解决方案1】:

我只是添加了一个标签来演示。您添加的每个标签都将具有相同的事件过程(AddressOf 部分),但添加处理程序直接引用新标签变量 (mylabel.Click)

Private Sub Form3_Load(sender As Object, e As EventArgs) Handles MyBase.Load
    Dim mylabel As New Label With {
            .Text = "New Label",
            .Name = "newLabel",
            .Location = New Point(400, 100)
        }
        AddHandler mylabel.Click, AddressOf aLabel_Click
        Controls.Add(mylabel)
End Sub

这是您的活动流程

Private Sub aLabel_Click(sender As Object, e As EventArgs)
        Dim EventLabel As Label = DirectCast(sender, Label)
        Dim LabelText As String = EventLabel.Text
        'or any other property of the label you need to use
        MessageBox.Show(LabelText)
End Sub

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-30
    • 2014-04-07
    • 1970-01-01
    • 2022-10-06
    • 2015-03-25
    相关资源
    最近更新 更多