- - PR -
VB.NET でのフォーカスセットの方法
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2003-08-13 17:13
実行時に、Form を showdialogにて表示した時に、
TABINDEX=0 の項目にフォーカスをセットしたいのですが上手くいかず、 フォーカスがセットされません。 表示された画面上では、フォーカスがどこにもセットされていないように見えます。 デバッグでは、TABINDEX=0 の項目にセットされるのですが。。。 また、Form を表示する前に、表示したフォームを常に手前に表示したいため、 下記APIを使用しているのが原因ではないかと思うのですが。 (このAPIを使用しないと、実行時でもフォーカスがセットされる) ≪実行順序≫ (1)SetWindowPos(mHwnd, HWND_TOPMOST, 0, 0, 0, 0, SWP_SHOWWINDOW Or SWP_NOMOVE Or SWP_NOSIZE) (2)intRet = Form.ShowDialog() ただ、フォーカスがセットされない原因の 詳細がよくわからないのでどなたかわかられる方がおれば、 教えていただければと思います。 よろしくお願いします。 |
|
投稿日時: 2003-08-13 19:54
WindowsFormの話でしょうか?
VB.NETは使ってないのでどうかわかりませんが、 Tabindex = 0 のコントロールの FocusメソッドをあえてCallしてみた場合には、フォーカスセットされます でしょうか? |
|
投稿日時: 2003-08-13 21:00
WindowsFormになります。
Tabindex=0 のコントロールへ Focusメソッドを使用しても、フォーカスはセットされませんでした。 また、Selectメソッドにて、選択されている状態にすることはできたのですが、 フォーカスはセットされませんでした。 |
|
投稿日時: 2003-08-14 11:08
こんにちは。
対象のコントロールのTabStopがFalseだったりしませんか? #見当違いだったらすいません。 一応確認してみては。 |
|
投稿日時: 2003-08-14 14:36
どうもです。
対象コントロールの TabStopは、Trueでした。 SetWindowPosを使用しなければ、フォーカスはセットされる のですが。 APIは使用しないほうが良いのでしょうか。。。 |
|
投稿日時: 2003-08-15 03:56
SetWindowPosを呼ぶときのタイミングの問題かもしれません。
SetWindowPosは、どういったタイミングで呼んでいますか? formのload時等にcallしていますでしょうか? であるならば、activateイベント時などに場所を 変えてみるなどして、問題が解消しませんでしょうか? [ メッセージ編集済み 編集者: ken 編集日時 2003-08-15 03:57 ] |
|
投稿日時: 2003-08-15 08:56
対症療法ですが、
表示したフォームを常に手前に表示する処理をTopMostプロパティでしてみてはどうでしょうか? |
|
投稿日時: 2003-08-18 22:22
kenさん、rucioさん返信ありがとうございました。
返答遅くなりました。すいません。 どちらも試して見ました。 TabIndex=0 へフォーカスがセットされるか試した結果です。 (1)formのactivateイベント時にSetWindowPosをcall →成功 (2)formのTopMostプロパティを TRUE にする →失敗 (3)formのloadイベント時にSetWindowPosをcall →成功 ■元々は、showdialogを行う前にSetWindowPosをcallしておりました。 どうもcallするタイミングが悪かったようです。 (3)にて行おうと思います。 なんとか解決いたしました。ありがとうございました。 ★また、formロード時にコールされる順番等の詳細な情報を調べる場所、 参考などがかかれている良いページがあれば 教えていただければとおもいます。 |