2012-03-31 4 views
0

私はちょっと新しいので、質問が正しく欲しいかどうか分かりませんが、ラベルをクリックしたときに実行できるサブまたは関数を書くことです複数のラベルで再利用できるようにする。合計で12があります。私は少しずつ異なる文字で同じことを何度も何度も繰り返し書きたくありません。プログラマーは決して同じことを二度書きたいとは思いませんよね?また、何か他のものが動的にそれを行う必要があります。VB.Net - どのようにオブジェクトを「動的に」選択しますか?

これを達成しようとしていたのは、文字列を使用し、クリック時に文字列にラベルの名前を追加することでした。

click1 = "Label1" 

このように、click1.Textと言うだけでLabel1のテキストを返すことはできません。それを暗黙的に行うことが重要な理由は、前にクリックしたものを覚えて最初のクリックと2回目のクリックを比較する必要があり、一致する場合はAを実行し、一致しない場合はBを実行する必要があるからです。

答えて

3

clickイベントに応答するために書き込んだイベントハンドラの最初のパラメータ(送信者と呼ばれます)は、イベントを送信したオブジェクトです。

すべてのあなたのラベルのクリックでに対応する同じルーチンを割り当てた場合、それはそれらの一つ一つのために呼び出されますが、送信者のパラメータが HTH

をクリックした実際のラベルを指していますあなたは構文がわからない場合は

+0

ありがとうございました!混乱の種ですが、私はそれから何かを学んだので、まだかなり有用です! – soxroxr

1

mfeingoldは、正しいです:

Private Sub LabelClicked (ByVal sender As Object, ByVal e As EventArgs) Handles Label1.Click, Label2.Click, Label3.Click 
    sender.Text = "I've been clicked." 
End Sub 
+0

ありがとうございます。私は以前それを見たことがなかった。 – soxroxr

+0

+1フォームデザイナーでイベントを配線することもできます。すべてのラベルを選択し、プロパティウィンドウに移動し、イベントタブをクリックし、Clickイベントを見つけてドロップダウンを使用して、すべてのイベントを処理するルーチンを選択します。または、新しい名前を入力すると、ルーチンが作成されます。 – MarkJ

関連する問題