- PR -

VB6のようにコマンドボタンからフォームのKeyDoenイベントを実行する

1
投稿者投稿内容
atmark_ken
会議室デビュー日: 2007/02/23
投稿数: 3
投稿日時: 2007-02-23 13:33
VB6での Form_KeyDown(KeyCode, Shift) 処理を.Netで行うにはどうすればいいでしょうか?
・ButtonコントロールのClickにて上記のように処理を行いたいのですが。。。
 (Button1〜8…にF1〜F8キーの割り当てを行っています)
・いろいろ調査しましたが、解決には至らず、調査過程の中で「イベントは発生するもので、発生させるものではない」などのコメントも確認し、そもそも.Netの思想から外れているのかもしれませんが、
・フォームKeyDown時にButton1.PerformClickメソッドで呼び出すのが本来なのでしょうか?
atmark_ken
会議室デビュー日: 2007/02/23
投稿数: 3
投稿日時: 2007-02-23 13:34
自己レスです。
Key_DoenでなくKey_Downですね
失礼しました
一郎
ぬし
会議室デビュー日: 2002/10/11
投稿数: 1081
投稿日時: 2007-02-23 13:43
Button1のクリック時とF1の押下時に同じ処理をする。が正解じゃないですか。

Button1のクリック時とF1の押下時にデータベース登録処理を行うなら、Button1のクリック時とF1の押下時どちらでもTouroku()メソッドを呼ぶ、というような作りにしましょう。
mio
ぬし
会議室デビュー日: 2005/08/25
投稿数: 734
お住まい・勤務地: 神奈川県
投稿日時: 2007-02-23 13:48
えーと…ボタンをクリックした際に、フォームでキーを押したことにしたい、ということですか?
例えば、キーコードを引数にしたメソッドAを別に作れば、なにか見えて来ないですかね。
そういう考え方をしてみては。

[ メッセージ編集済み 編集者: mio 編集日時 2007-02-23 13:49 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2007-02-23 13:54
引用:

atmark_kenさんの書き込み (2007-02-23 13:33) より:

・いろいろ調査しましたが、解決には至らず、調査過程の中で「イベントは発生するもので、発生させるものではない」などのコメントも確認し、そもそも.Netの思想から外れているのかもしれませんが、


ということは、

引用:

VB6での Form_KeyDown(KeyCode, Shift) 処理を.Netで行うにはどうすればいいでしょうか?


こちらの文章の '意味' は、KeyDown イベントをメソッドを呼ぶがごとく、

コード:

    Call Form_KeyDown(KeyCode, Shift)


こうしていたということでしょうか?

これに関しては、.NET がどうこう関係なく VB6 でも 「イベントは起こすものではない」 と言えます。

引用:

・フォームKeyDown時にButton1.PerformClickメソッドで呼び出すのが本来なのでしょうか?


PerformClick メソッドは、ローカルな業務用フレームワーク実現のために使用した方が良いでしょう。
単発ものであれば、一郎さんが仰るようにメソッドで明示化した方が可読性は良いと思います。

仮に、Button1 〜 Button8 が仮想ファンクションだとしたら、そういうユーザーコントロールを作り、
ユーザーコントロール内部で解決を図った方が良いかもしれません。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
atmark_ken
会議室デビュー日: 2007/02/23
投稿数: 3
投稿日時: 2007-02-23 14:09
みなさん多数のご意見ありがとうございます。
VB6からイベントの使用方法を取り違えていたのかもしれませんね
大変、参考、ためになりました
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)