VB.NETでプログラム組んでいます。
下のように、あるフォームの中でメニューを設定して、メニューを選択すると処理を実行するようにしています。
Private Sub OpenMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenMenu.Click
(オープンメニュークリック時の処理)
End Sub
このとき、同一フォームの中にツールバーを下のように設定して
上の(オープンメニュークリック時の処理)を実行させるには、
次の???の記述はどのようにすればよいのでしょう?。
(オープンメニュークリック時の処理)はかなり長い処理(関数(Private Sub Function)も含む)になってしまっているので、コピーして記述するのも嫌なのです。
普通に 「OpenMenu_Click()」
でよいのかと思っていましたが、引数(eでしょうか?)を設定しないとだめのようで、。
どのようにすればよいのかわかりません。すみませんが、ご教示ください。
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
???
End Sub
No.1ベストアンサー
- 回答日時:
「オープンメニュークリック時の処理」をサブルーチンにして
OpenMenu_Click()とToolBar1_ButtonClick()から呼べば良いのでは?
Private Sub OpenMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenMenu.Click
OpenMenu()
End Sub
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
OpenMenu()
End Sub
Private Sub OpenMenu()
(オープンメニュークリック時の処理)
End Sub
回答ありがとうございます。
そうですね。サブにすればすむ問題でしたね。
むづかしく考えすぎていたようでした。
どうも慣れてないもので、、、。
ありがとうございました。
No.2
- 回答日時:
1 共通化する
Private Sub OpenMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenMenu.Click
hogehoge_proc()
End Sub
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
hogehoge_proc()
End Sub
Private Sub hogehoge_proc()
(オープンメニュークリック時の処理)
End Sub
が普通。
2 .NETだから
Private Sub hogehoge_proc(ByVal sender As System.Object, ByVal e As System.EventArgs)Handles OpenMenu.Click, ToolBar1.ButtonClick
(オープンメニュークリック時の処理)
End Sub
って両のっけでもいいかも
3 どうしてもってなら
Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
OpenMenu_Click(sender,e)
End Sub
ってできるよ
回答ありがとうございます。
1の方法は下の方のお礼にも書きましたがありがとうございました。
2や3の方法は私知りませんでしたので、やってみました。
2の方法ですと、どうもハンドルするところに
toolbar1.clickとすると良いようですが、
ツールバーにボタンが複数ある場合
(例えばtoolbarbutton1~toolbarbutton5)
に面倒なことにどのボタンを押しても実行してしまうようで、
使いづらくなるようでやめました。
3の方法も引数設定することでできました。
でもやっぱ、嫌ですよね。
やはり1の方法を採用することにしました。
ありがとうございました。
No.3
- 回答日時:
1つの明快な解は、その部分をプロシージャ(FunctionやSub)にして2つのイベントから呼び出すというものだ。
これは、それだけのために1つプロシージャを作成する必要があるが、共通部分をプロシージャにして、2つのイベント内で呼び出し、個々の処理を別々に記述する事ができる。Private Sub ToolBar1_ButtonClick(ByVal sender As System.Object, ByVal e As System.Windows.Forms.ToolBarButtonClickEventArgs) Handles ToolBar1.ButtonClick
OpenMenu_Click(sender, e)
End Sub
でも動きそうな気もしないでもないが、やはりツールバーイベントの特性上、分けた方が良いだろう。他にも、
Private Sub OpenMenu_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles OpenMenu.Click, ToolBar1.ButtonClick
(オープンメニュークリック時の処理)
End Sub
という風に、VB.NETではVB6と違って1つのプロシージャを2つのイベントハンドラにする事もできる。ただ、理論上は動作すると思うが、ツールバー相手にできるかどうかは分からない。
回答ありがとうございます。
下の方のお礼にも書かせていただきましたが、
2つのイベントハンドラにすると、
厄介なことになりそうなので、
結局サブにして呼び出すことにしました。
ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Visual Basic(VBA) 【Excel VBA】自動メール送信の機能追加 5 2022/09/29 12:53
- Visual Basic(VBA) ユーザーフォーム「frm_基本❶」を立ち上げると新規で入力する行数を右下のNoとして表示しています。 1 2023/03/16 19:02
- Visual Basic(VBA) VBAで質問ですが、皆さんはどの様に導き出しているのでしょうか? 6 2022/05/03 21:53
- Access(アクセス) Vba Userformを前面に出すについて 3 2022/04/15 12:29
- Visual Basic(VBA) 【変更】ファイルを閉じてダイアログで保存した時、更新したシートだけの処理の実行をする 5 2022/03/26 18:31
- Excel(エクセル) B列に文字がはいったらA列に数字が入るマクロードを完成させたい 4 2023/04/21 01:58
- Visual Basic(VBA) 【追加】ファイルを閉じてダイアログで保存した時だけ処理の実行をする 3 2022/03/23 15:43
- Visual Basic(VBA) 【VBA】Excelで罫線を引きたい 3 2022/07/14 12:04
- Visual Basic(VBA) Visual Basic : ImageListの画像がそろったときにメッセージを表示 1 2023/07/20 13:53
- Visual Basic(VBA) いつもお世話になっております、VBAで教えて頂きたいのですが 2 2022/05/05 22:20
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
もしかして
-
「ご処理進めて頂きますようお...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
Do~Loopした回数をカウントしたい
-
switch の範囲指定
-
VBAでセルに値が入力されるまで...
-
メルカリのメルカードで買い物...
-
【Excel】特定の文字を含むセル...
-
DoEventsがやはり分からない
-
UMLでの例外処理
-
リョウ・・・量?料?
-
Loadイベント中にほかのイベン...
-
findは動くがfindnextがマクロ...
-
自分の不注意で仕事で乗り合い...
-
VBの質問#if 0 then ってどう...
-
EXCEL VBA マクロ 実行する度に...
-
[ホルマール」って何ですか
-
VBA SaveChanges 上書きされない
-
vba 空のデータをSplitする時の...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
「ご処理進めて頂きますようお...
-
メルカリのメルカードで買い物...
-
エクセルで、日付を入力すると...
-
VBAでループ内で使う変数名を可...
-
【Excel】特定の文字を含むセル...
-
EXCEL VBA マクロ 実行する度に...
-
switch の範囲指定
-
DoEventsがやはり分からない
-
VBの質問#if 0 then ってどう...
-
UMLでの例外処理
-
Do~Loopした回数をカウントしたい
-
VB.NET Excelを読み込んでDataT...
-
月度は何て読みますか?
-
findは動くがfindnextがマクロ...
-
リョウ・・・量?料?
-
iD
-
VBA SaveChanges 上書きされない
-
Select Case文でこのようなこと...
-
Loadイベント中にほかのイベン...
-
セルの値が0はクリアするマクロ
おすすめ情報