- - PR -
TextBoxのフォーカス
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2004-09-16 17:19
C#でWindowsApplicationを開発しています。
Formに二つTextBoxがあります。名前はtextBox1とtextBox2です。 texBox1のGotFoucsエベント @マウスダウンでGotFoucsエベントを呼び出す場合、「textBox2.Foucs();」を実行すれば、textBox1_GotFocusは2回実行されます。「textBox2.Foucs();」は無効になりましたら、textBox1_GotFocusは1回実行されます。 ATabキーでGotFoucsエベントを呼び出す場合、「textBox2.Foucs();」を実行する、しないに関わらず、textBox1_GotFocusは1回しか実行されません。 上記の二つ状況は何の区別を教えていただけませんか。どうしてマウスダウンでGotFoucsエベントを呼び出したら、「textBox2.Foucs();」を1回だけ実行しますか。 以上、よろしくお願いいたします。 _________________ |
|
投稿日時: 2004-09-16 19:06
こんにちは。
この質問の文章だと少し意味がわかりません。 (この質問や過去の投稿から、根性さんは日本の方ではないと推測します。) できればソースコードを提示してください。 そうすれば、答える側の理解の助けとなります。 ポイント ・(1)のマウスダウンは、どのオブジェクトのイベントでしょうか? ・(2)のTabキーは、どのオブジェクトにフォーカスがあたっているときに押しましたか? ・(1)と(2)の「textBox2.Focus();」は同じ箇所から呼び出されるコードでしょうか? #ちなみに日本語では「エベント」ではなく「イベント」と記述します。 |
|
投稿日時: 2004-09-17 10:15
noderaさん、おはようございます。
今日本語を勉強していますから、意味がよく言い表されないのはすみません。^0^ ご指摘有難うございました。 ソースコード ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー private void InitializeComponent() { … this.textBox1.GotFocus += new System.EventHandler(this.textBox1_GotFocus); … this.textBox2.GotFocus += new System.EventHandler(this.textBox2_GotFocus); … } private void textBox1_GotFocus(object sender, System.EventArgs e) { textBox4.Focus(); textBox3.Text = (Int32.Parse(textBox3.Text) + 1).ToString(); } private void textBox2_GotFocus(object sender, System.EventArgs e) { textBox4.Text = (Int32.Parse(textBox4.Text) + 1).ToString(); } ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー >ポイント >・(1)のマウスダウンは、どのオブジェクトのイベントでしょうか? ◆マウスダウンはオブジェクトのイベントではなく、textBox1_GotFocusの呼び出す方法で す。 >・(2)のTabキーは、どのオブジェクトにフォーカスがあたっているときに押しましたか? ◆ フォーカスがあたっているオブジェクトは関係がないが、Tabキーを通って、texBox1_GotFoucsを呼び出せればと思います。 >・(1)と(2)の「textBox2.Focus();」は同じ箇所から呼び出されるコードでしょうか? ◆はい、同じ箇所から呼び出されるコードです。 _________________ |
|
投稿日時: 2004-09-23 11:21
ご存知でしたら、教えてお願いいたします。
_________________ |
|
投稿日時: 2004-09-24 13:17
こんにちは。
提示していただいたコードをこちらでも実行してみましたが、確かに同じ現象になりました。 Tabキーでの移動では、WM_SETFOCUSメッセージが1度しか発生しないのですが、マウスでクリックした場合は、WM_SETFOCUSメッセージが2度発生しています。 WM_SETFOCUSメッセージを処理中に他のコントロールへフォーカスを移動とが、マウスクリックと相性がわるいのでしょうか。。。「なぜ」そうなるのかまでは分かりませんでした。 このメッセージの発生の原理が分かる方、お願いします > 識者の方々 ところで、GotFocusイベントの中で他のコントロールへフォーカスを移動するという方法は、仕様上どうしても必要な処理なのでしょうか? 代案として直接Focusメソッド呼ばずにBeginInvokeで非同期に呼び出してみるってのも手かもしれません。 |
|
投稿日時: 2004-09-28 11:36
すみませんが、詳しい説明をいただけませんか。
_________________ |
1