
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で質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
VBA(エクセル)で自動的にボタンをクリックさせるには
その他(プログラミング・Web制作)
-
VBでクリックイベントを発生させたいです
Visual Basic(VBA)
-
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
-
-
4
private subモジュールを他のモジュールから呼び出して使う方法を教えてください(-.-)
Visual Basic(VBA)
-
5
ExcelVBAのユーザーフォームの中に線を引きたい
Visual Basic(VBA)
-
6
Access サブフォームでの選択行の取得
その他(データベース)
-
7
VBA エンターキーでイベントに入りたい。
PowerPoint(パワーポイント)
-
8
Excel VBAでマウスの左クリックのイベントを検知するには
Visual Basic(VBA)
-
9
VBAでブックを非表示で開いて処理して閉じる方法
Excel(エクセル)
-
10
データセットのレコード更新がしたい
Visual Basic(VBA)
-
11
Integer変数をカラにしたいのですが
Visual Basic(VBA)
-
12
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
13
共通モジュールでDBへの接続と利用方法
Visual Basic(VBA)
-
14
TextBoxコントロールを引数として渡すには?
その他(教育・科学・学問)
-
15
エクセルVBAでUserFormを起動した時
Excel(エクセル)
-
16
(VBA)チェックボックスのclickのイベントが、プログラムからの操作でも反応してしまいます。
Visual Basic(VBA)
-
17
オブジェクト型の変数にフォームを入れたい
Visual Basic(VBA)
-
18
UserForm1.Showでエラーになります。
工学
-
19
ドロップダウンリスト 自動表示したい
Excel(エクセル)
-
20
MSFormsとは何ですか?
XML
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Edge操作のアプリが例外発生に
-
はじめまして VBA初心者です。
-
C#(Visual Studio)用のデー...
-
【VBA】答え合わせのシステム化...
-
VBA ユーザーフォームラベルキ...
-
リストボックス更新
-
ボタン一個で表示非表示切り替...
-
userfome内の編集について
-
チェックボタン選択時のセル反...
-
VBA シートのボタン名を変更し...
-
VBA CommandButtonの文字ずれ
-
Excel マクロ 閉じるボタン
-
VBA(エクセル)で自動的にボタン...
-
VBAで多数のプログラムを一つの...
-
VBA MsgBoxで、”いいえ(No)”ボ...
-
ボタン上にビットマップ、アイ...
-
フォームのアイコンが行方不明...
-
閉じると「+」になり開くと「-...
-
C# WindowsForm Button押下判定
-
C#メッセージボックスバックグ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートのボタン名を変更し...
-
VBA(エクセル)で自動的にボタン...
-
ユーザーフォームに別シートか...
-
C#プログラムで、ボタンをショ...
-
VBAでオプションボタンによって...
-
Excel VBA Application.caller...
-
VBA CommandButtonの文字ずれ
-
VBAで多数のプログラムを一つの...
-
フォームの再読み込み
-
アイコンとボタンの違い
-
コマンドボタンやイメージにマ...
-
ボタンをマウスで押し続けたと...
-
ASP.Net ラベルの内容をすぐに...
-
閉じると「+」になり開くと「-...
-
[VB.net] ボタン(Flat)のEnable...
-
セルをマクロのボタンにしたい。
-
VBAのボタンの位置が変わって困...
-
Access VBA でデータペーストを...
-
Excel マクロ 閉じるボタン
-
TextBoxでEnterキーを押すと、...
おすすめ情報