4

私はwinformアプリケーションを実行しています。このアプリケーションの上部にもう1つのwinformを追加しました。これにより、アプリケーションにデータが渡されます。アプリケーションにデータを渡すと、[保存] ボタンが有効になり、データをアプリケーションに保存できます。保存ボタンは toolstripmenuitem です。私が直面している 1 つの問題は、新しく追加されたフォームがまだそこにある場合です。保存するには 2 回クリックする必要があります。つまり、最初のクリックでは正しくクリックされません。または、新しく追加された winform を閉じると、保存クリックが初めて発生するか、既存のアプリケーションの任意の部分をクリックすると、つまりフォーカスがそこにあり、最初のクリックも行われます。

4

3 に答える 3

8

ツール ストリップを含むフォームにこのメソッド オーバーライドを追加すると、それが処理されます。

protected override void WndProc(ref Message m)
{
    const int WM_PARENTNOTIFY = 0x0210;
    if (m.Msg == WM_PARENTNOTIFY)
    {
        if (!Focused)
            Activate();
    }
    base.WndProc(ref m);
}

ツール ストリップは Activate 呼び出しのみを実行しているため、自分で処理することで Click イベントを実行します。

于 2012-12-12T14:58:39.717 に答える
0

ある時点でメインフォームで行う必要がある保存ボタンを有効にするときは、それに対して Focus() を呼び出します。そうすれば、フォーカスがメイン フォームに戻され、ユーザーはワンクリックで保存できます。

于 2012-12-12T10:02:34.907 に答える