ネットや書籍で調べてみたものの要領を得なかったため質問させていただきます。
開発環境:visual web developer
画面デザイン:テキストボックス(ID:TextBox1)、ボタン(ID:DeleteButton)、ボタン(ID:UpdateButton)、ボタン(ID:CloseButton)
従来の記述方法:ボタン一つずつの単位で押された時の処理を書いていました。
Protected Sub DeleteButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles DeleteButton.Click
TextBox1.Text = "削除しました"
End Sub
Protected Sub UpdateButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles UpdateButton.Click
TextBox1.Text = "更新しました"
End Sub
Protected Sub CloseButton_Click(ByVal sender As Object, ByVal e As EventArgs) Handles CloseButton.Click
TextBox1.Text = "終了しました"
End Sub
今回やりたいこと:
押されたボタンのIDを何らかの方法で取得し、変数"ButtonID"に代入→Select Caseを使い、変数の値に応じて処理の振り分けを行う。
Sub Button_Click()
Dim ButtonID As String = ????
Select Case ButtonID
Case "DeleteButton"
TextBox1.Text = "削除しました"
Case "UpdateButton"
TextBox1.Text = "更新しました"
Case "ClseButton"
TextBox1.Text = "終了しました"
Case Else
'処理は行わない
End Select
End Sub
わからない点:押されたボタンのIDを取得する方法です。
もしわかる方がいましたらご助言いただけると助かります。
よろしくお願い致します。
A 回答 (2件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
Sub Button_Click(ByVal sender As Object, ByVal e As EventArgs) Handles DeleteButton.Click, UpdateButton.Click, CloseButton.Click
という感じで、複数のイベントハンドラを1つにまとめる事ができます。この時、sender には押されたボタンのインスタンスが格納されてきます。
sender.ID を取得すればよいかなと思います。確認してませんので微調整してください。
No.1
- 回答日時:
こんにちわ。
visual web developerは当方では使用していませんが、ほぼ同じ様な構文を持つvisual basicだと以下のようにすれば行うことが出来ます。「回答」と言うよりあくまでも「参照」としていただければと思います。(ActiveControl.nameが使用できるか不明なため。使用できない場合は同様のコントロールがあるはず)
<参照コーディング> visual basic
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
xx()
End Sub
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
xx()
End Sub
Private Sub xx()
Select Case ActiveControl.Name
Case Is = "Button1"
MsgBox("Button1が押されました")
Case Is = "Button2"
MsgBox("Button2が押されました")
Case Else
MsgBox("降下されたボタンが不明です")
End Select
End Sub
この回答への補足
ご助言ありがとうございます。
ActiveControl.Nameは↓のものでしょうか
http://msdn.microsoft.com/ja-jp/library/system.w …
下記のロジックで取得できないか試してみましたが、
「オブジェクト参照がオブジェクト インスタンスに設定されていません。」といエラーが出てしまっています。インスタンスは作ってるつもりなのですが・・・。
Dim instance As ContainerControl = New ContainerControl
Dim value As String
value = instance.ActiveControl.Name
開発環境:visual web developer 2008 Express Edition
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 九九の答えの計算 3 2022/12/20 22:13
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/20 16:59
- Visual Basic(VBA) VBA Userformで一部別シートに転記がしたいのですが 2 2023/05/24 13:08
- Excel(エクセル) 【マクロ】スクショ印刷がうまく動かない件 5 2022/12/06 17:37
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
- Visual Basic(VBA) エクセルのVBAでダブルクリックでチェックを入れたあと 1 2022/10/26 20:30
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
コマンドボタンやイメージにマ...
-
セルをマクロのボタンにしたい。
-
3つのオプションボタンの場所...
-
プロシージャからイベントをコ...
-
チェックボックスで指定出来る...
-
VBAのボタンの位置が変わって困...
-
CommandButtonのCaptionを変化...
-
ボタン
-
コマンドボタンやテキストボッ...
-
VB.NETです ラジオボタンの文...
-
フォームの再読み込み
-
VBS でユーザーからいくつかの...
-
TextBoxでEnterキーを押すと、...
-
【VBA】Accessを終了する前にメ...
-
VBA IE ダウンロード ダイアロ...
-
フォームから別のフォームを呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
VBA CommandButtonの文字ずれ
-
フォームの再読み込み
-
セルをマクロのボタンにしたい。
-
Excel VBA Application.caller...
-
コマンドボタンやイメージにマ...
-
プロシージャからイベントをコ...
-
Access VBA でデータペーストを...
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
-
Excel マクロ 閉じるボタン
-
ボタン
-
CommandButtonのCaptionを変化...
-
VB.NETでマウスクリックイベン...
-
ボタンの枠線の様なものを消したい
-
C#で動的に作ったtextboxを消す。
おすすめ情報