アプリケーションに「cmsView」という名前の contextmenustrip があります。マウス ボタンを右クリックすると、cmsView が開き、アプリケーションの cmsView が閉じられる場所をクリックします。cmsViewを開いてWindowslogo + Dを押すと(つまり、アプリケーションを最小化します)、cmsViewは閉じられず、アプリケーション内のいくつかをクリックしてフォーカスを失うたびに開いた状態になります。
1065 次
1 に答える
1
ContextMenuStrip
これは、アプリケーションまたはコントロールのバグではありません。どちらかといえば、これは Windows のポップアップ メニュー コントロールのバグであり、WinForms コントロールは実際にそのバグを模倣しているため、ユーザーの期待どおりに動作します。
これは、メモ帳などの単純なアプリケーションで自分でテストできます。Win新しいインスタンスを開き、ドキュメント領域を右クリックして+を押しDます。アプリケーションのウィンドウが消えた (最小化された) 場合でも、コンテキスト メニューは開いたままデスクトップに表示されます。
したがって、アプリケーションでこれを「修正」しようとすることはお勧めしません。ローマにいるときは、ローマ人がするように...
どうしても修正しなければならない場合は、フォームの最小化イベントをリッスンして、コンテキスト メニューを手動で閉じるように指示してみてください。
private const int WM_SYSCOMMAND = 0x0112;
private const int SC_MINIMIZE = 0xf020;
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_MINIMIZE)
{
// Close the context menu strip when the form is being minimized
cmsView.Close();
}
}
base.WndProc(ref m);
}
于 2011-08-02T04:47:11.507 に答える