DOBON.NET DOBON.NETプログラミング掲示板過去ログ

RadioButtonのChackedChangedイベント発生時のフォーカスセット遅延について

環境/言語:[C#、WindowsXP、NET Frameworkのバージョン1.1]
分類:[.NET]

こんにちは。

下記の問題解決方法が見つからなくて悩んでいます。
ご教授下さい。

操作手順
@RadioButtonを2つ並べて表示する。
※RadioButtonのChackedChangedイベントでThread.Sleep(100*10)という処理を行う。
Aラジオボタンを選択し、キーボードの方向キーでラジオボタンのチェックを変更する。

問題点
マウスクリックでラジオボタンのチェックを変更した場合、
フォーカスがセットされるタイミングがチェックを付けたタイミングとなるが、
キーボードの方向キーでラジオボタンのチェックを変更した場合、
手順※の処理を実行してからフォーカスがセットされる為にラジオボタンに
フォーカスがセットされるタイミングが遅れる。


ラジオボタンを独自コントロールにし、IsInputKey(Keys keyData)メソッドをオーバーライドして方向キーが押下されたかを
判別したりするなどいろいろ試してみたのですが
なかなか良い解決策が見つかりませんでした。
やっぱり、発生するイベントのタイミングを制御するのは不可能なのでしょうか?

宜しくお願いします。
>やっぱり、発生するイベントのタイミングを制御するのは不可能なのでしょうか?
Application.DoEvents メソッド を行った時点でメッセージ キューに現在ある Windows メッセージをすべて処理します。
Thread.Sleep(100*10) の前に、Application.DoEvents メソッド を呼んでやったらどうでしょうか?
■No7778に返信(えムナウさんの記事)
> >やっぱり、発生するイベントのタイミングを制御するのは不可能なのでしょうか?
> Application.DoEvents メソッド を行った時点でメッセージ キューに現在ある Windows メッセージをすべて処理します。
> Thread.Sleep(100*10) の前に、Application.DoEvents メソッド を呼んでやったらどうでしょうか?
>

えムナウさん、ご返答ありがとうございます!
Application.DoEventsメソッドでも試してみたのですが、
現象は回避されませんでした。
今日もいろいろ試してみたのですが、これは仕様であると割り切るしか
ないかな〜と思いはじめてきました。

どうもありがとうございました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板