- - PR -
イベントの発生元操作(?)取得について
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2005-02-02 11:59
ご存知の方、お知恵を貸してくださいませ。
★ButtonのClickイベントですが、ユーザのどのような 操作方法で発生したか判別は可能ですか??? 例えば、 ・マウスからクリックされた ・Enterキー押下でクリックされた …など 現在作成中のフォームでは、 FormにKeyDownイベントを持たせ、 『Enterキー押下で次のフォーカスへ移動』 という処理をいれています。 で、ボタンをEnterキーで押下した場合に 以下のようなイベントの流れになってしまい、 @【ボタンClickイベント】 入力チェックをし、エラーの場合には エラーとなった項目にフォーカスセット ↓ A【フォームのKeyDownイベント】 次のコントロールにフォーカス移動 @とAの両方に処理が走ってしまい、 こちらの意としないところにフォーカスが移ってしまいます。 @がEnterキーで発生した場合にはAへ行かせないように したいと思っています。 |
|
投稿日時: 2005-02-02 12:14
下記参照ください。
http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html [ メッセージ編集済み 編集者: SE卵 編集日時 2005-02-02 12:14 ] |
|
投稿日時: 2005-02-02 13:19
SE卵さま、ご返事ありがとうございました。
ただ、参照先の内容を読んでいたのですが最後の最後に 以下の内容が書いてあります。 > Buttonコントロールの場合は(デフォルト設定のままでは) > [Enter]キーによるKeyDownイベントが発生しないようである。 > そのため、Buttonコントロールについては[Enter]キーによる > フォーカス移動処理をスキップするためのコードは不要だ 今回、私が担当しているプロジェクトでは 『ボタンもEnterキーで押下可能』 となっています… ★そこで必要になるのが 『ボタンがEnterで押下されたか?』 という判断条件になります。 お手数をお掛けしますがご存知の方がいらっしゃいましたら ご回答宜しくお願い致します。 |
|
投稿日時: 2005-02-02 13:27
じゃんぬねっと です。
色んな方法があるかと思います。 例えば、素直に MouseDown() イベントでフラグを設けるなど。 フラグが true でなければ、[Enter] か [Space] によるボタンのクリックと判断できます。 # もちろん、Click() イベントと MouseUp() でフラグを元に戻す必要があります。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |
|
投稿日時: 2005-02-02 15:23
じゃんぬねっと さま、ご回答ありがとうございました。
ご提案頂いた形で対応することに致しました。 <追加したボタンのイベントと処理順番> @MouseDown マウスフラグON AClick スキップ判定 BMouseUp マウスフラグOFF 上記で希望通りの動作となりました。 誠にありがとうございました。 |
1