5

私は c# ベースの Windows フォーム アプリケーションに取り組んでおり、支援が必要です。フォームが親フォームにフォーカスを失ったときに、ほとんどの Windows アプリケーションで発生するウィンドウのちらつきを再現しようとしています。これを説明できる最善の方法は、計算機を開いてヘルプ ウィンドウを開き、計算機をクリックしようとすることです。ヘルプ ウィンドウは、計算機に遅れをとらずにちらつき、エッジの周りの影を失ったり獲得したりします。

親がクリックされたときに子ウィンドウにフォーカスを取り戻すことができましたが、親ウィンドウが一時的に子ウィンドウの前に表示されるため、奇妙なちらつき効果が生じます。私は推測しているだけですが、私が探している効果は、電卓がヘルプ ウィンドウの前に表示されず、ヘルプ ウィンドウが数回アクティブ化および非アクティブ化されることです。

いくつか検索してみましたが、これに関連するいくつかのトピックを見てきましたが、完全に一致する解決策はありません。私はWindowsフォームアプリケーションを作成するのにかなり慣れていないので、まだ理解できないことがあります.

前もって感謝します

電卓の例の詳細:

1) Windows アクセサリから電卓を開く 2) ツールバーの [ヘルプ] タブに移動し、[電卓について] オプションを開く 3) [電卓] ウィンドウをクリックする 4) [電卓について] ウィンドウがちらつく

これに向けて私が行った唯一の進歩は

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

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

open 変数は、フォームが開いているかどうかを追跡するために使用するもので、別のフォームを表示すると true になります。

4

2 に答える 2

7

あなたの例では、Aboutウィンドウはモーダルウィンドウと呼ばれています。モーダル ウィンドウは、親ウィンドウが閉じられるまで、ユーザーが親ウィンドウを操作できないようにします。Form をモーダル ウィンドウとしてユーザーに表示するForm.ShowDialog代わりに使用します。Form.Show

于 2013-04-19T14:35:51.157 に答える
0

子フォームを作成しmodalます。これは、フォーカスを親に戻す前に、子を適切に閉じる必要があることを意味します。

于 2013-04-19T14:36:11.877 に答える