- PR -

イベントの発生元操作(?)取得について

1
投稿者投稿内容
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2005-02-02 11:59
ご存知の方、お知恵を貸してくださいませ。

★ButtonのClickイベントですが、ユーザのどのような
 操作方法で発生したか判別は可能ですか???

例えば、
 ・マウスからクリックされた
 ・Enterキー押下でクリックされた  …など


現在作成中のフォームでは、
FormにKeyDownイベントを持たせ、
『Enterキー押下で次のフォーカスへ移動』
という処理をいれています。

で、ボタンをEnterキーで押下した場合に
以下のようなイベントの流れになってしまい、

  @【ボタンClickイベント】
   入力チェックをし、エラーの場合には
   エラーとなった項目にフォーカスセット
      ↓
  A【フォームのKeyDownイベント】
   次のコントロールにフォーカス移動

@とAの両方に処理が走ってしまい、
こちらの意としないところにフォーカスが移ってしまいます。

@がEnterキーで発生した場合にはAへ行かせないように
したいと思っています。
SE卵
大ベテラン
会議室デビュー日: 2004/10/22
投稿数: 135
投稿日時: 2005-02-02 12:14
下記参照ください。

http://www.atmarkit.co.jp/fdotnet/dotnettips/231winentermove/winentermove.html

[ メッセージ編集済み 編集者: SE卵 編集日時 2005-02-02 12:14 ]
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2005-02-02 13:19
SE卵さま、ご返事ありがとうございました。
ただ、参照先の内容を読んでいたのですが最後の最後に
以下の内容が書いてあります。

> Buttonコントロールの場合は(デフォルト設定のままでは)
> [Enter]キーによるKeyDownイベントが発生しないようである。
> そのため、Buttonコントロールについては[Enter]キーによる
> フォーカス移動処理をスキップするためのコードは不要だ

今回、私が担当しているプロジェクトでは
『ボタンもEnterキーで押下可能』
となっています…

★そこで必要になるのが
 『ボタンがEnterで押下されたか?』
 という判断条件になります。


お手数をお掛けしますがご存知の方がいらっしゃいましたら
ご回答宜しくお願い致します。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-02-02 13:27
じゃんぬねっと です。

色んな方法があるかと思います。
例えば、素直に MouseDown() イベントでフラグを設けるなど。
フラグが true でなければ、[Enter] か [Space] によるボタンのクリックと判断できます。

# もちろん、Click() イベントと MouseUp() でフラグを元に戻す必要があります。
_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
青@
会議室デビュー日: 2004/02/22
投稿数: 10
投稿日時: 2005-02-02 15:23
じゃんぬねっと さま、ご回答ありがとうございました。
ご提案頂いた形で対応することに致しました。

<追加したボタンのイベントと処理順番>
 @MouseDown マウスフラグON
 AClick   スキップ判定
 BMouseUp  マウスフラグOFF

上記で希望通りの動作となりました。
誠にありがとうございました。
1

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