
No.4ベストアンサー
- 回答日時:
manihei様がすでにプログラマーとしてご活躍されていれば
お分かりのように、システム開発はほとんどの場合1人ではなく、
数名の方と一緒に開発されていると思います。
また、たとえ1人で開発されている場合でも毎日のようにコーディング
していれば、1度自分が書いたプログラムでも3日も経てば他人が書いたコードの
ように思えるはずです。
その上で、ただ「ボタンを押す」というコードを.NETで用意されている
1.Button1.PerformClick()
とするか
2.Button1_Click(New Object, New System.EventArgs)
とした場合どちらがわかりやすいでしょうか?
きっと、2のコードが書かれていた場合、manihei様を含め、
後でプログラムを見た人はきっと何らかの思惑が有って2のコードを
書いたはずだと考えるのでは無いでしょうか?
そして、何の意味も無いことが分かり、ガックリし軽い怒りを覚えます。
ttyp03様も何度もおっしゃっているように、「わかりやすい」コードを
書くのは未来の自分の為でもあるのでは無いでしょうか?
また、ボタンのイベントハンドラは以下のようになってますが、
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'処理
End Sub
イベントハンドラの引数にObject型のsender、System.EventArgs型のeが有ります。
senderはイベントが発生したオブジェクト(この場合ボタンですね)の情報が入ってます。
同様にeにも発生したイベントの情報が含まれてます。
ボタンの場合eにはたいした情報は有りませんが、テキストボックスのキーダウン
イベントなどでは、どのキーが押されたかなど様々な情報を取得出来ます。
開発者は当然その前提の下でイベントハンドラを実装します。
---------------------------------------------
イベントハンドラ内の処理例
'sender(Object)をbutton型にキャスト
Dim btn As Button = DirectCast(sender, Button)
'ボタンの名前を表示
MessageBox.Show(btn.Name)
---------------------------------------------
そこで、例えばAAAと言うメソッド内にボタンを押すという意味で以下のコード
Button1_Click(New Object, New System.EventArgs)
を使ってしまえばイベントハンドラ内では何の情報も得ることが出来ないどころか例外が発生します。
逆に、AAAと言うメソッド内でButton1_Click(New Object, New System.EventArgs)
などとイベントを直接呼んでいるのを知らずボタン内のイベントハンドラで
処理例のようなコードを誰かが書いたとしましょう。
さらに、AAAというメソッドは滅多に通る事が無く、テストの手抜きでリリースまで
しちゃた時には非常にアワワな事になります。
manihei様の安眠の為にもお勧め致しません。
最後に、補足では有りますがご質問内に有る
>Private Function AAA()
>Call Button1_Click(**(1)**,**(2)**)
>End Function
ですが、正確にお答えすると、
(1)には、Objectクラスまたは、Objectクラスの派生クラスのオブジェクト
(2)には、System.EventArgsクラスまたは、System.EventArgsクラスの派生クラスのオブジェクト
となります。オブジェクト指向の継承やポリモフィズムの部分を勉強すると意味が
分かるようになり、ボタンイベントだけでは無く今後プログラムを作成する上で
manihei様のお役にたつのではないかと思います。
長々と乱文失礼しました。
No.3
- 回答日時:
はじめまして、VB.NETでボタンクリックイベントを
発生させるには、以下のようにします。
Button1.PerformClick()
また、ご質問のようにクリックイベントのメソッドを
呼ぶには、下記のようにも出来ますが、
このようなコードは書かない方が賢明だと思いますよ。
Button1_Click(New Object, New System.EventArgs)
この回答への補足
ご回答ありがとうございます。
このようなコードは書かない方が賢明だと思いますよ。
Button1_Click(New Object, New System.EventArgs)
上記のコードを書く場合何か問題があるのでしょうか?
No.2
- 回答日時:
ボタンのクリックはクリックイベントを直接呼ぶのでは無く、クリックイベントを発生させてはいかがでしょう。
VB6.0の場合、
Button1.Value = True
とするとクリックイベントが発生します。
VB.NETにも該当するものがあると思うのですが。
当方、VB6.0のみの環境なので検証できず。すみません。
以上、ご参考とまで。
No.1
- 回答日時:
個人的な考え方を言うと、その作りが間違っていると思います。
イベントプロシージャはあくまでもイベントからのみ受け付ける位置付けにしておき、他のプロシージャからの呼び出しはしないようにしたほうがわかりやすいと思います。
で、どうするかというと、Button1_Click の処理内容をごっそり別のプロシージャとして作成し、Button1_Click からはそのプロシージャを呼び出します。
同様にAAAプロシージャからも新しく作ったプロシージャを呼び出すようにするとわかりやすいかと思います。
Private Function Button1_Click()
Call button1();
End Function
Private Function AAA()
~
Call button1();
~
End Function
Private Function button1()
' Button1_Clickの処理
End Function
しばらくVB.netを触っていないので構文が間違ってたらすみません。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript javascriptで移動ボタンを押した際に遷移するボタンを追記したい 1 2022/11/29 03:02
- AJAX JavascriptからPHPへのAjax通信でnullが返ってくる 3 2022/08/03 22:00
- JavaScript 追加ボタンを押した際に ok ボタンを押した場合のみ入力値が追記されるようにしたいです 6 2022/05/29 09:57
- JavaScript jQueryでのレスポンシブが綺麗に動かない 3 2022/06/21 11:08
- HTML・CSS 下にスクロールしても、追従するボタンのコードを書いたのですが、ボタンの中の画像が半分しか表示されない 1 2022/04/16 21:31
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- Visual Basic(VBA) 標準モジュール Public mOnTime As Date Sub sample() '実行プロシ 1 2023/02/22 15:44
- JavaScript コードレビューをお願いします。 1 2022/07/16 05:38
- Visual Basic(VBA) EXCEL VBAにて動的にCheckBOXを複数作成し、同BOXにイベントを追加したい 1 2023/03/16 07:05
- JavaScript javascriptのちょっとした動作不良(原因は突き止めたのですが) 1 2023/06/15 19:58
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
モジュールからフォームのボタンをクリックするには?
Access(アクセス)
-
VBでクリックイベントを発生させたいです
Visual Basic(VBA)
-
-
4
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
5
VB.NETで他のプロジェクトで作成したフォームを使う方法
Visual Basic(VBA)
-
6
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
7
VBAで保存しないで閉じると空のBookが残る
Excel(エクセル)
-
8
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
9
他のフォームから別のフォームのサブルーチンを呼び出す
Visual Basic(VBA)
-
10
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
11
Access サブフォームでの選択行の取得
その他(データベース)
-
12
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
13
VBA基本構文の作り方 2列のリストボックスの昇順並び替え&列削除
Visual Basic(VBA)
-
14
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
15
Excel vbaで別ブックのコマンドボタンをクリック
Visual Basic(VBA)
-
16
日付型のフィールドに空白を入れる方法を教えてください
その他(データベース)
-
17
ユーザーフォームを表示中にシートの操作をさせるには
Excel(エクセル)
-
18
カレントレコードが無い事を判定させる方法
Visual Basic(VBA)
-
19
VBA シートのボタン名を変更したい
Visual Basic(VBA)
-
20
DataTableに特定のフィールドが存在するかどうか調べるには?
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
コマンドボタンやイメージにマ...
-
ユーザーフォームに別シートか...
-
Excel VBA Application.caller...
-
Access VBA でデータペーストを...
-
C#プログラムで、ボタンをショ...
-
[VB.net] ボタン(Flat)のEnable...
-
セルをマクロのボタンにしたい。
-
VBA CommandButtonの文字ずれ
-
ボタンをマウスで押し続けたと...
-
フォームの再読み込み
-
ASP.Net ラベルの内容をすぐに...
-
VB.net でトグルボタンを実現し...
-
VB.NET テキストボックスの入力...
-
回数のカウント
-
マルチページで現在開いている...
-
VB6でマルチスレッド?
-
C#で動的に作ったtextboxを消す。
-
プロシージャからイベントをコ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
セルをマクロのボタンにしたい。
-
VBA CommandButtonの文字ずれ
-
Excel VBA Application.caller...
-
C#プログラムで、ボタンをショ...
-
フォームの再読み込み
-
コマンドボタンやイメージにマ...
-
[VB.net] ボタン(Flat)のEnable...
-
Excel マクロ 閉じるボタン
-
VBAで多数のプログラムを一つの...
-
ボタンをマウスで押し続けたと...
-
VB.net でトグルボタンを実現し...
-
プロシージャからイベントをコ...
-
アイコンとボタンの違い
-
VBAのボタンの位置が変わって困...
-
閉じると「+」になり開くと「-...
-
[Excel VBA]コマンドボタンの入...
-
ASP.Net ラベルの内容をすぐに...
おすすめ情報