这是我写的:
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在我运行程序时创建它之前实际上并不在注册表中。那么有人可以帮助我吗?
答案 0 :(得分:0)
变量Label2
是声明它的函数的本地变量 - 这意味着您只能在此函数内访问它。您可以在模块级别使用变量(如果您不想从其他模块中使用它,则将其声明为私有)。请参阅MSDN Scope in Visual Basic文章。
答案 1 :(得分:0)
您的问题是范围。 Label2的声明在label1.mousehover的事件处理程序中,因此在label1.mouseleave的事件处理程序中它不会存在。
您可以通过创建标签并将其设置为不可见,然后在事件处理程序中操纵其可见性和文本来更好地完成您想要的任务。