掲示板システム
ホーム
アクセス解析
カテゴリ
ログアウト
ボタンのPerformClickとマウスクリックするので挙動が違う (ID:148255)
名前
ホームページ(ブログ、Twitterなど)のURL (省略可)
本文
> PerformClickは通常のクリックイベントと同様の動作をすると思っていたので残念です PerformClick の問題というよりも、KeyDown から KeyUp までの処理の流れの中で、 それらを阻害するような処理を割り込ませたことが原因ではないでしょうか。 そもそもメッセージボックスが表示されているときに F10(またはAlt) → Enter(またはSpaceあるいは矢印など) の キー操作が行われると場合、そのような状態になりますよね。 それ自体はメニュー操作のためのキー操作ですが、 メッセージボックスにはアプリケーションメニューが無いので、 直接「システムメニュー」が表示される、というわけで。 > 2回目のメッセージボックスでもきちんと「OK」ボタンにフォーカスが当たる方法はないでしょうか? キー操作の途中で割り込ませたが故の問題であるとすれば、 キー操作が終わった後—すなわち KeyUp —で処理されては如何でしょうか。 そうすれば、システムメニューも出なくなると思います。……多分。 KeyUp だと都合が悪いのであれば、KeyDown 内の処理で、 If e.KeyCode = Keys.F10 Then e.Handled = True 'Application.DoEvents() Button1.PerformClick() End If のように、「.Handled = True」を加えてみてください。これにより、 イベントがユーザー処理されたことが伝わるので、既定の動作が 抑制されることが期待されます。駄目なら DoEvents 連携で。 (以下蛇足) > きちんと「OK」ボタンにフォーカスが当たる方法はないでしょうか? 上記が、コントロールをアクティブにするという意味にとどまらず、 さらに加えて、フォーカス枠の破線も表示させたいという意味であれば、 マウス操作ではなく、キーボード操作で画面を表示する必要があります。 もし、マウス操作でもフォーカス枠を表示させたい場合には、 OS側の[コンピューターの簡単操作センター]のキーボード設定で、 「ショートカットキーとアクセスキーに下線を表示」を有効にすることになります。 http://dobon.net/cgi-bin/vbbbs/cbbs.cgi?mode=al2&namber=31200&no=0&KLOG=5
←解決時は質問者本人がここをチェックしてください。
更新する
戻る
掲示板システム
Copyright 2021 Takeshi Okamoto All Rights Reserved.