2013-04-19 24 views
5

私はWindowsフォームアプリケーションをC#に基づいて作業しており、私はいくつかの支援が必要です。私は、フォームが親フォームにフォーカスを失ったときに、ほとんどのWindowsアプリケーションが持つウィンドウのちらつきを再現しようとしています。私がこれを説明できる最良の方法は、電卓を開いてヘルプウィンドウを開いて電卓をクリックしようとすると、電卓の後ろに落ちることなくヘルプウィンドウが消えて、エッジの周りでシャドウイングが起こります。フォーカスが失われたときにウィンドウがちらつきますか?

親がクリックされたときに子ウィンドウのフォーカスを取り戻すことができましたが、親ウィンドウが子ウィンドウの前に一時的に持ち込まれるため、奇妙なフリッカー効果が発生します。私は推測しているに過ぎませんが、私が探している効果は、電卓がヘルプウィンドウの前に持ち込まれることはないと思われ、ヘルプウィンドウは単に数回アクティブにされ、非アクティブにされるということです。

私はいくつかの検索を試みましたが、これに関連するいくつかのトピックを見てきましたが、解決策のどれも全く一致しませんでした。私はかなり新しいウィンドウズアプリケーションを作成するので、まだ理解できないことがあるので、私が最初に何かを理解していなければ、私には忍耐強くなければなりません。

は事前

で電卓の例に推敲をありがとう:)

1 windowsのアクセサリ 2から電卓を開く)ツールバーの[ヘルプ]タブに移動し、約計算オプション 3を開きます)私はこの方に作っただけ進歩は

ある電卓の後ろに

を落下決してながら、約電卓ウィンドウが、その後点滅します)電卓ウィンドウ 4をクリックしてください10

private void MainForm_Activated(object sender, EventArgs e) 
    { 
     if (Open == true) 
     { 
      //blink active window 

      _addForm.Activate(); //makes window active 
     } 
    } 

オープン変数は、開いているフォームを追跡するために使用するもので、別のフォームを表示したときにtrueになります。

+0

どのような解決策が見つかりましたか?コードの一部を投稿してください。 –

+1

+1、実際に面白い質問。 Jesse、あなたが何を記述していたかを理解するために私はいくつかの読みが必要でした...あなたが話していることを知っている人に、より明確な再生ステップを書くことを検討したいかもしれません。 – tnw

+0

良い、良いreproのステップ。また、あなたが試したことのためのコードを含める必要があります。あなたが90%のように見えます。 – tnw

答えて

7

この例では、[情報]ウィンドウをモーダルウィンドウと呼びます。モーダルウィンドウは、ユーザーが閉じられるまで親ウィンドウとやりとりすることを防止します。 Form.Showの代わりにForm.ShowDialogを使用すると、フォームをモーダルウィンドウとしてユーザーに提示できます。

+0

soooooooありがとう、私はソリューションがこの単純だったとは思えません!私は十分にあなたに感謝することはできません! – Jesse

0

子フォームをmodalにします。つまり、フォーカスを親に戻すには、子を正しく閉じる必要があります。

関連する問題