2

私のアプリケーションでは、メッセージ ボックスを表示し、ユーザーが [OK] や [キャンセル] などのボタンをクリックすると、ウィンドウがフォーカスを失い、最小化されます。

ウィンドウをアクティブに保つために、set focus を使用して、win32 API SetForegroundWindow(window hWnd) も使用しようとしました。ウィンドウの背後で別のアプリケーションが開いている場合、メッセージ ボックス ボタンをクリックした後にアプリケーション ウィンドウのフォーカスが失われることに気付きましたが、それがデスクトップで唯一表示されているウィンドウである場合は正常に動作します。私は Windows 7 で作業していますが、Win XP でも同じ問題に直面しています。

グラデーションフォームを使用しています。メッセージボックスを表示するには、MessageBox.Show("Message Text", "", MessageBoxButtons.OK,MessageBoxIcon) を使用します。違いはありません。

4

3 に答える 3

5

この種のことは、メッセージ ボックスを閉じたときに有効になっているウィンドウがない場合に発生します。Windows は、フォーカスを与える別のウィンドウを見つけることを余儀なくされ、別のアプリケーションから 1 つを選択します。また、他のウィンドウがない場合にこれが問題にならない理由についても説明します。

ウィンドウを無効にしないでください。言い換えれば、これを避けてください:

   this.Enabled = false;
   MessageBox.Show("oops");
   this.Enabled = true;

そのように Enabled を true に戻すのは手遅れです。

于 2011-03-09T05:11:26.470 に答える
0

setForgroundwindow()ダイアログボックスを表示する前に使用してウィンドウをアクティブにすることで問題を解決し、すべてが正常に機能するようになりました。

于 2011-03-12T05:53:25.863 に答える