- ベストアンサー
senderに含まれているハンドルしてきたコントロールを知る方法
VB2008 Vistaです。 似たような処理が3つあるので、subに3つのボタンをハンドルしました。 ただ、その一部をハンドルしてきたボタンによって処理を変えないといけないのですが、どのボタンがハンドルしてきたのかを知るすべがわからず困っています。 senderの中にボタンの名前(textプロパティの内容)が見つかったのですが、取り出し方がわかりません。(もしくは根本的に間違っているのかも知れませんが) どのようにすればよいでしょうか。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
' Buttonオブジェクト、Button1とButton2をハンドルしたとき If sender Is Button1 Then TextBox1.Text = sender.Text ElseIf sender Is Button2 Then TextBox1.Text = sender.text End If senderは、イベント発生元のオブジェクトと同一に考えていいようなので、このように判定するのはどうでしょうか。 ちなみに、If文の中でsenderからTextプロパティを取得しているところですが、Option StrictをOFFにしている場合は、 TextBox1.Text = CType(sender, System.Windows.Forms.Button).Text このように明示的にキャストするとうまくいきます。
その他の回答 (1)
- AS400VBNET
- ベストアンサー率57% (4/7)
こんな感じでいかがでしょうか? Private Sub Button_Click(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Button1.Click, Button2.Click '判別方法 Select Case True Case sender.Equals(Button1) Case sender.Equals(Button2) End Select '内容 Debug.Print(sender.text) End Sub
お礼
ありがとうございます。 イコールも使えるのですね。 勉強になりました。
お礼
ありがとうございました。 「Is」を使うとわかるのですね。 試してみましたがうまくいきました。