【发布时间】: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。普通的旧标签怎么样?