1

这是我写的:

Public Class Form1

Public Sub Label1_MouseHover(sender As Object, e As System.EventArgs) Handles Label1.MouseHover
Dim Label2 As New Label
Label2.Location = New Point(158, 87)
Label2.Text = "lol"
Me.Controls.Add(Label2)
End Sub

Public Sub Label1_MouseLeave(sender As Object, e As System.EventArgs) Handles Label1.MouseLeave
Me.Controls.Remove(Label2)
End Sub
End Class

所以,当我将鼠标放在另一个标签上时,我想创建一个新标签,当我用鼠标离开标签时,我希望新创建的控件消失。使用此代码,它说:“'Label2' 未声明。由于其保护级别,它可能无法访问。” 可能是因为 Label2 实际上并没有在注册表中,直到我在运行程序时创建它。那么有人可以帮助我吗?

4

2 回答 2

0

该变量Label2对于声明它的函数是本地的 - 这意味着您只能在此函数内访问它。您可以在模块级别使用变量(如果您也不想在其他模块中使用它,请将其声明为私有)。请参阅 Visual Basic文章中的 MSDN范围。

于 2012-08-31T15:01:06.260 回答
0

您的问题是范围。Label2 的声明在 label1.mousehover 的事件处理程序中,因此在 label1.mouseleave 的事件处理程序期间它不会存在。

您可能可以通过创建标签并将其设置为不可见,然后在事件处理程序中操作其可见性和文本来更好地完成您想要的事情。

于 2012-08-31T15:01:23.187 回答