重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

電子書籍の厳選無料作品が豊富!

VB2008 Vistaです。
似たような処理が3つあるので、subに3つのボタンをハンドルしました。

ただ、その一部をハンドルしてきたボタンによって処理を変えないといけないのですが、どのボタンがハンドルしてきたのかを知るすべがわからず困っています。

senderの中にボタンの名前(textプロパティの内容)が見つかったのですが、取り出し方がわかりません。(もしくは根本的に間違っているのかも知れませんが)

どのようにすればよいでしょうか。

A 回答 (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

このように明示的にキャストするとうまくいきます。
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/16 13:15

こんな感じでいかがでしょうか?


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
    • good
    • 0
この回答へのお礼

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

お礼日時:2009/02/16 13:16

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!