2010-12-03 11 views
1

奇妙な問題が発生しています。私はC#.NET 2.0アプリケーションとコンテキストメニューを持っています。アプリケーションを右クリックすると、コンテキストメニューが表示され、メニューの項目の1つが「オプション」になります。オプションをクリックすると、ShowDialog()メソッドを使用して表示されるOptionsDialogフォームが表示されます。問題は、Windows XPでは、フォーカスが消えていくことです。オプションフォームをクリックすると、1秒間フォーカスが得られますが、もう一度それを失います!私はすべてを試しました。 Deactivateイベントではthis.Focus()を呼び出しますが、違いはありません。ウィンドウを一番上にしてみましたが、まだ動作しません。ダイアログボックスがWindows XPでフォーカスを失う

もう1つの厄介なことは、この問題はXPでしか起こらないようだということです。私はVistaとWindows 7でそれを試して、それは完璧に動作します。 XPは何か面白いことをやっている。誰でもこれを解決する方法について考えている?ここ

+0

あなたは別のXPマシンで試したことがありますか? – Stu

+0

はい。私は自分のアプリケーションをテストするためにVMWareを使います。私は2つの別々のXPイメージをテストに使用しなければならず、どちらも同じような動作をします。 – Icemanind

+0

Spy ++を使用してWindowsメッセージを表示しようとしましたか?あなたはどのスレッドがフォーカスを引っ張っているのかを知ることができるはずです –

答えて

1

人が同じ問題を抱えているようだ:http://forums.devshed.com/c-programming-42/c-form-won-t-focus-on-control-535596.html

が間違って何が起こっているかのようなことは何ですか?デフォルトのボタン、またはフォームが起動するときに無効になる最初のタブストップ値であるコントロールがある場合は、その問題の原因になる可能性があります。

フォーム上の無効なコントロールを確認し、既定のボタンと最初のタブストップコントロールが有効になっていることを確認します。 (ヒント:デフォルトのボタンは、通常、モーダルフォームでは「キャンセル」する必要があります。常に有効にする必要があります)

+0

私の問題とその男の問題の違いは、彼が特定のコントロールからのフォーカスを失っているようだということです。私の問題は全部のフォームがコントロールを失うことです – Icemanind

+0

あなたは正しいです。うーん、ShowDialogを呼び出して何か変更があるかどうかを確認するときにダイアログの結果をダミー変数に代入しようとしましたか? – Alain

+0

ええと、私はDialogResultの価値を保存する必要があるため、とにかくやっています – Icemanind

0

後でどのウィンドウにフォーカスがあるかを知っていれば、何が起こっているのかを知ることができます。

1997からこの小さなデモアプリケーションはあなたを助ける:http://www.microsoft.com/msj/0397/Win32/Win320397.aspx

関連する問題