- - PR -
【VB.NET】コントロール配列のイベント内で、コントロールを識別する方法
1
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2004-02-26 11:21
はじめまして。Feと申します。
コントロール配列のイベントに関する質問です。 VB.NETで、スマートデバイスアプリケーションをメイクしています。 デザイン時に配置した複数のボタンを、フォームロード時にコントロール配列に格納し、イベントハンドラに関連付けています。(以下がそのコード) Dim MyButtons(9) As Button 'コントロール配列 Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim i As Integer '配列のインデックス番号 'コントロール配列に、すでに作成されているインスタンスを代入 MyButtons(0) = Button1 MyButtons(1) = Button2 MyButtons(2) = Button3 ・ ・ MyButtons(9) = Button10 'イベントハンドラに関連付け For i = 0 To 9 AddHandler MyButtons(i).Click, AddressOf MyButtons_Click Next i End Sub Private Sub MyButtons_Click(ByVal myObject As Object, ByVal e As System.EventArgs) '各ボタンごとの処理 End Sub そこで、コントロール配列のクリックイベント(MyButtons_Click)内で、どのボタンがクリックされたかを判別し処理を行いたいのですが、判別の仕方がわかりません。 例えば、配列のインデックス番号で判別する事はできないのでしょうか? 何か良い方法がございましたら、御教授下さい。 宜しくお願い致します。 [ メッセージ編集済み 編集者: Fe 編集日時 2004-02-26 11:25 ] | ||||||||
|
投稿日時: 2004-02-26 11:39
NAL-6295です。
こんな感じや
こんな感じで可能です。 | ||||||||
|
投稿日時: 2004-02-26 11:52
配列のインデックス番号は以下の方法で取れると思います。
Dim ClickedIndex As Integer ClickedIndex = Array.IndexOf(MyButtons, myObject) | ||||||||
|
投稿日時: 2004-02-26 12:04
NAL-6295さん、999さん、御教授ありがとうございます。
この方法で上手くいきそうです。 これから精進致します。 | ||||||||
|
投稿日時: 2004-02-26 12:11
配列のインデックスではなくて単にButtonオブジェクトにアクセスしたいだけなら、
Dim clickedButton as Button = DirectCast(myObject, Button) とかでいいですが(Button型にキャストしてるだけ)。 というか、イベントのsenderは元々、イベントを発生させたオブジェクトにアクセスできるようにするために用意されています… |
1