環境 vb2005 framework2.0 ,OS windows-xp/pro
ボタンなどがついていないIP取得画面でPcのIPを取得します(loadに書いてます)
IPを取得した場合ログイン画面に飛びます。(ログイン画面.showとloadに書いています)
IP取得画面は透明100%にしていますのでログイン画面しかみえない状態です。
しかし本来ログイン画面のtxtloginID.textにフォーカスをおきたいのですがIP取得画面が選択させているので
一回Enterキーをおさなければログイン画面が選択状態になりません。
IP取得画面のロードではなくボタンクリック時に飛べばフォーカスはあたるのですが
IP画面は見えなくしますのでロードでなにかできないですか?
昨日からはまっています。
TOPMOSTでログイン画面をむりやり前にだしても選択されている画面はIP取得画面でした
初心者です、宜しくお願いいたします。(;;)
> IP取得画面は透明100%にしていますのでログイン画面しかみえない状態です。
そもそも何故、そのIP 取得処理は、わざわざ「画面(Form の事かな?)」に実装されているのでしょうか?
見えない画面など使わず、Main メソッドやログイン画面から、IP を取得するようにしておけば済む話だと思いますが…。
> TOPMOSTでログイン画面をむりやり前にだしても選択されている画面はIP取得画面でした
前面/背面の Z-order 位置と、フォーカス制御は別物ですしね。
今の実装のままにするなら、ログイン画面を Activate() してみては如何でしょう。
タイミング的には、Load 時というより、Shown 時や Activated 時かな。
と。良く見たら板違いでしたね。ここは VB2-VB6 専用の掲示板です。
隣の掲示板に移動しておいてください。
> 環境 vb2005 framework2.0 ,OS windows-xp/pro
ちなみに VB6 であっても、基本的な回答は一緒です。
完全透過なレイヤード ウィンドウで IP を取得するのではなく、
Sub Main で取得しておき、それをログイン画面に渡すか、あるいは
ログイン画面で IP を取得するような実装にするべきかと。
で。実装を変更できない場合は、仕方ないので、透過ウィンドウ側の
Activate イベントで、ログイン画面の SetFocus メソッドを呼びましょう。
掲示板違いでした。
失礼いたしました