• ベストアンサー

tagの値

ボタン1を押すと変数に1を ボタン2を押すと変数に2を・・・ という具合にしたいのですが、いろいろしてみましたが、分かりません。分かる方教えてくだい。 (tagには値を入れてあります。) Button1_Click、Button2.Click~ Label1.Text = Tag や Button1_Click、Button2.Click~ Label1.Text = Me.Tag だと、なぜかフォームのtagの値が入ってしまいます。 Button1_Click~ Label1.Text = Button1.Tag Button2.Click~ Label1.Text = Button2.Tag だとソースが長くなってしまいます。 ちなみにVB.NETです。

質問者が選んだベストアンサー

  • ベストアンサー
  • ARC
  • ベストアンサー率46% (643/1383)
回答No.4

えと、VB.Netにはコントロール配列はありません。 こんな感じに書けばいいですね。 Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) _  Handles Button1.Click, Button2.Click, Button3.Click, Button4.Click   MsgBox(sender.tag) End Sub

hirosi_123
質問者

お礼

ご回答・アドバイス等ありがとうございます。 解決しました。

その他の回答 (3)

回答No.3

#2 さんのおっしゃる方向性だとすると、 コマンドボタンをコントロール配列にすればいいんじゃないかと思ったのですが・・・。 コントロール配列にするには、コントロールの名前を同じにして Index プロパティに数字をセットしていけばOKです。

hirosi_123
質問者

補足

 ご回答・アドバイス等ありがとうございます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

VB.NETは勉強不足ですが,察するに、イベントを捉えられるコントロール類(通常は同種)が沢山(集合)あって、その中のどれがクリックされたかの情報がシステムから返してもらえれば(判れば)、コーディング経済上スッキリすると言うことでしょう。私もかって夢想しました。 今はボタンの数だけ記述しておかないといけない。 (架空言語)BTNはCommandButtonの略とします。 SET ボタン類 AS BTN1,BTN2,BTN3,BTN4・・・で定義。 sub ボタン類_CLICK(NO as INTEGER) 押されたボタンを                   通知してくれる。 Label1.Text=ボタン類(NO).tag その押されたボタンの                 情報を変数へ代入。 End Sub しかしこの考えは、VBには無く、VB.NETにも無いでしょう。お詳しい方よろしく。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

>だと、なぜかフォームのtagの値が入ってしまいます。 そりゃそうでしょう。 >だとソースが長くなってしまいます。 どこが長いのですか? そう書かないといけないものだと思うのですが。

hirosi_123
質問者

補足

どこが長いのですか? > ボタンが他にもあるからです。 長いと言うより、ボタン1つ1つに入れるのが面倒だからです ご回答・アドバイス等ありがとうございます。

関連するQ&A