• ベストアンサー

senderに含まれているハンドルしてきたコントロールを知る方法

VB2008 Vistaです。 似たような処理が3つあるので、subに3つのボタンをハンドルしました。 ただ、その一部をハンドルしてきたボタンによって処理を変えないといけないのですが、どのボタンがハンドルしてきたのかを知るすべがわからず困っています。 senderの中にボタンの名前(textプロパティの内容)が見つかったのですが、取り出し方がわかりません。(もしくは根本的に間違っているのかも知れませんが) どのようにすればよいでしょうか。

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

  • ベストアンサー
  • yaguma
  • ベストアンサー率57% (4/7)
回答No.1

' 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 このように明示的にキャストするとうまくいきます。

xiaolong_goo
質問者

お礼

ありがとうございました。 「Is」を使うとわかるのですね。 試してみましたがうまくいきました。

その他の回答 (1)

回答No.2

こんな感じでいかがでしょうか? 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

xiaolong_goo
質問者

お礼

ありがとうございます。 イコールも使えるのですね。 勉強になりました。

関連するQ&A