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は、宣言されている関数に対してローカルです。つまり、この関数内でのみアクセスできます。モジュールレベルで変数を使用できます(他のモジュールからも使用したくない場合は、プライベートとして宣言してください)。VisualBasicの記事のMSDNスコープを参照してください。

于 2012-08-31T15:01:06.260 に答える
0

あなたの問題はスコープです。Label2の宣言はlabel1.mousehoverのイベントハンドラー内にあるため、label1.mouseleaveのイベントハンドラー中には存在しません。

ラベルを作成して非表示に設定し、イベントハンドラーでその表示とテキストを操作することで、目的をより適切に達成できる可能性があります。

于 2012-08-31T15:01:23.187 に答える