1

メイン ウィンドウ UI スレッドであるスレッド 1 と、モーダル フォームのログイン UI スレッドであるスレッド 2 があるとします。

スレッド 1 はコードを実行し、ログイン フォームの UI 要素を変更したいので、デリゲートを呼び出してスレッド 2 で何かを変更します。しかし、そうすると、ログイン フォームがメイン ウィンドウの後ろに隠れてしまい、方法がありません私がそれを取り戻すために。タスクバーでそれを選択しても何も起こらず、呼び出されたメソッドの最後に「Activate()」を書いても何もしません。

スレッド 2 の UI が非表示にならないようにするにはどうすればよいですか?

ありがとう

4

2 に答える 2

5

メイン ウィンドウを更新するために呼び出した後、ログイン フォームでFocus()を呼び出します。また、ログイン フォームの親ウィンドウをメイン ウィンドウとして表示すると役立つ場合があります。

(メインの UI クラスで)

using (YourLoginForm f = new YourLoginForm()){

    YourLoginForm.Show(this)
}

別の方法として、 Show( )の代わりにShowDialog()を使用し、ログインが成功したかどうかに応じて、ログイン フォームが異なるDialogResultを返すようにすることもできます。ShowDialog() は、ログイン フォームを自動的にモーダルに設定し、フォーカスを設定する必要があります。

于 2009-10-25T05:56:12.710 に答える
0

うわー....セルフpwn。k、消えるセカンドウィンドウの事は問題外

しかし、コメントの質問はまだ残っています.... 2 番目のスレッドで ShowDialog を実行するとき、新しいウィンドウがメイン ウィンドウとは別に動作しないようにするにはどうすればよいですか? つまり、メイン ウィンドウが 2 番目のウィンドウの背後にあるときに、ユーザーがメイン ウィンドウを最小化することを望まないのです。別のプログラムが一番上に表示されてすべてが非表示になっている場合、タスクバーのメイン ウィンドウのアイコンをクリックすると、2 番目のウィンドウが表示されます。

于 2009-10-25T06:16:54.900 に答える