• ベストアンサー

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

AS400VBNETの回答

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

  • ASP.NET2.0でのコントロール配列

    早速質問させていただきます。 VB2005のWindowsアプリではtagプロパティを使ってオブジェクトの特定ができたので コントロール配列が可能でした。 '---ハンドラー作成 For i = 0 To 9 '//コイル1 AddHandler txt_(i).MouseDoubleClick, AddressOf txt_MouseDoubleClick txt_(i).Tag = i Next '---イベント処理 Private Sub txt_MouseDoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Dim i As Integer i = CType(sender, TextBox).Tag end sub しかしASP.NET2.0のテキストボックスやコマンドボタンにはtagプロパティがない?ため、 イベント元オブジェクトを特定できません。これは代わりとなるプロパティがあるのでしょうか? それとも、ASP.NET2.0ではWindowsアプリのようなコントロール配列はできないのでしょうか? ご教授のほどよろしくお願い致します。

  • フォーム上の任意のコントロール上でのイベントをまとめてハンドリングする方法

    .NETにおいて、フォーム上に配置されたコントロールで発生したイベントを、各コントロールごとではなくて、まとめてハンドルする方法はないでしょうか。 例えば次のようなフォームがあります。 (Button1, Button2, Button3は、フォームに配置されたボタンとします) Public Class MyForm   Private Sub Button_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click, Button2.Click, Button3.Click   End Sub End Class ボタンが3つ程度の場合はこれで良いと思うのですが、例えば(極端に言えば)ボタンが100個ある場合、 Handles Button1.Click, Button2.Click, (途中省略.....) Button100.Click と書くしかないのでしょうか。 後で対象コントロールが増えたり減ったりした場合に間違いが起こりそうなので、このような書き方は避けたいです。 フォーム上のどのコントロールでも構わないからとにかくクリックイベントが発生したことを知るための方法はないでしょうか。 例えば次のようなかんじでハンドリングできないでしょうか。 Private Sub All_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles フォーム上の任意のコントロールでのClickイベント End Sub (環境はVB.NET2005です)

  • 【iOS】コントロールに名前を付けたい

    xcode4.5(iOS6)でiPhoneアプリを作っています。 まだまだわからないことが多いですが・・・。 storyboard上でボタンを複数設置した際、 各ボタンに名称を設定して、プログラム上で その名称を取得し、処理を行いたいと思っています。 ↑ すべてのボタンのアクションを1つのメソッドで受け、 senderの『名称』に応じて処理を変更したいということです。 いちいちswitchで処理を切り替えるのではなく、その『名称』を そのまま利用したい為、任意で『名称』を設定したいのです。 C#などで言うと、Nameプロパティなるものがあれば 済むと思うのですが、Object-IDしかなく、任意に文字を 決められるプロパティが見当たりません。 文字で設定したい為、Tagプロパティ以外が欲しいです。 上記のようなことは出来ないのでしょうか?

  • C#での書き方

    vb.netでは別のイベントを呼び出すとき下記のような書き方ができたのですが、C#ではどう書くんでしょうか? (ボタン2を押したらボタン1の処理が走る) Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click MessageBox.Show("AAA") End Sub Private Sub Button2_Click(sender As Object, e As EventArgs) Handles Button2.Click Button1_Click(sender, e) End Sub

  • ボタンをクリックした時にForm1のTextプロパティに値を代入する方法

    ボタンをクリックした時に Form1のTextプロパティに値を代入する方法 が不明です form1.text=”sample” とVB6では出来たと思ったのですが、 .netではどうなるのでしょうか?

  • C#でイベントハンドラを呼び出す方法

    すいませんが調べてもわからなかったのでお伺いします。 C#でイベントハンドラを呼び出す方法なのですが たとえばクリックの中のプログラムを別の所から呼び出すと言うことができるのでしょうか? 中身の一部ではなく全体です。 VBだとsubの名前を書いておけばよかったんですが..... 最近始めたばかりでよくわかりませんよろしくお願いいたします。

  • sub プロシージャを呼び出すにはどうればいいんですか?in vb 2005

    恐れ入ります。 vb2005にて、sub プロシージャをよびだしたいんですけどどうすればよろしいでしょうか?教えて下さい。 Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click load ike 'vb6ではこれでいけたのに・・・ End Sub Public Sub ike() textbox1.text="イケメン" end sub End Class

  • クラスに配列を渡す方法

    こんにちは、VB.NET初心者です。 メインプログラムからクラスに配列を渡したいのですが、どうやって渡せばいいのかわかりません。 一応、いろいろなサイトやMSDNを覗いたのですが、よく分かりませんでした。 よろしければ、教えてください。環境はVB2005です。 下記のは現在書いているソースなのですが、この場合エラーがでます。 メインプログラム Private Sub button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles button1.Click  Dim abc() as integer  ’配列に何かを入れる処理を記述  ’何個の要素が入るかはわかりません。通るときによって変わります。  Dim 123 As New clsAAA  123.ABC = abc  123.処理1() End Sub clsAAA Private pABC() As Integer Public Property ABC() As Integer  Get   Return pABC  End Get   Set(ByVal value As Integer)   pABC = value  End Set End Property

  • MSChartコントロールのフォント設定

    VB6のMSChartコントロールで、 Private Sub Form_Load() MSChart1.Title.Font.Size = 20 End Sub とし、フォントサイズを設定しようとしたところ、実行時に 「値の設定のみ可能なプロパティです。」 というエラーが発生してしまします。 フォントサイズだけでなく、フォントの名前、さらにFootnoteでも同様なエラーが発生します。 何が原因でしょうか?よろしくお願いします。

  • nudMinuteNum.Valueコントロールについて

    nudMinuteNum.Valueコントロールについて nudMinuteNum.ValueコントロールとnudSecondNum.Valueコントロールについて 下記のような簡単なプログラムなのですが、 (http://www.microsoft.com/Japan/msdn/archive/student/challenge/chap4_vb/default.aspx のラーメンタイマーのプログラム) 「nudMinuteNum は分を入力する数値アップダウン コントロールの名前で~」 とありますが、nudMinuteNumコントロールをMSDNとかで調べても見つかりません。 どなたかすみませんが、どういうことかおおしえねがえませんでしょうか? Public Class Form1 Private SecCount As Integer ' 秒数をカウントする変数 Private WaitSecond As Integer ' タイマー停止時間を秒単位で記憶する変数 Private Sub btnStart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnStart.Click ' 指定されたタイマー停止時間を秒単位で記憶 WaitSecond = nudMinuteNum.Value * 60 + nudSecondNum.Value ' 指定されたタイマー停止時間が 0 秒のときは開始処理をキャンセル If WaitSecond = 0 Then Exit Sub End If ' 秒数のカウントと表示を 0 に初期化 SecCount = 0 DigitalTimer.Second = 0 ' 指定されたタイマー停止時間を秒単位にしてプロパティに設定 'Timer1.Interval = (nudMinuteNum.Value * 60 + nudSecondNum.Value) * 1000 ' 表示画像を変更 PictureBox1.Image = My.Resources.Resources.調理中 ' [START] ボタンを無効化 btnStart.Enabled = False ' タイマーを開始 Timer1.Start() End Sub Private Sub DigitalTimer_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DigitalTimer.Load End Sub Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick SecCount = SecCount + 1 DigitalTimer.Second = SecCount If SecCount = WaitSecond Then ' 表示画像を変更 PictureBox1.Image = My.Resources.Resources.完成 ' タイマーを停止 Timer1.Stop() ' [START] ボタンを有効化 btnStart.Enabled = True End If End Sub End Class