5

私は ac# .net アプリを持っています。そこで、トレイに収まる notifyIcon を作成しました。私がやりたいのは、ユーザーがフォームの「x」ボタンを押したときに、フォームをトレイに近づけたいということです。トレイ アイコンのコンテキスト メニューを使用してのみ、プログラムを終了できる必要があります。

だから私がしたことは、フォームを閉じるイベントで、フォームが表示されているかどうかを確認することでした。表示されている場合は、非表示に設定し、showInTaskbar を false に設定します (トレイへの最小化をシミュレートします)。フォームが既に非表示になっている場合は、おそらくトレイからフォームを閉じているので、その場合はプログラムを終了します。

しかし、私が抱えている問題は、ウィンドウが表示されていても、トレイ アイコンのコンテキスト メニューを右クリックして [終了] をクリックすると、最小化せずにプログラムを終了する必要があることです。

この問題を解決するにはどうすればよいですか?

4

3 に答える 3

3

これを試して:

bool _closingFromMenu;

void NOTIFYICON_EXIT_MENU_HANDLER(object sender, EventArgs e)
{
    _closingFromMenu = true;
    Close();
}

//form closing handler
FormClosing +=(a,b) =>{
    if(_closingFromMenu){
        Close();
    }
    else{
        e.Cancel = true;
        //do minimize stuff;
    }
}

または、フォームが 1 つしかない場合はApplication.Exit();、コンテキスト メニュー項目ハンドラーで呼び出すことができます

于 2010-07-28T03:35:12.360 に答える
0

ウィンドウの状態に反映されるとは限らないため、ユーザーのアクションに基づいてアプリケーションの状態を追跡することをお勧めします。したがって、ユーザーがメニューから [終了] を選択したときは、ウィンドウを非表示にするだけでなく、実際に終了していることを示すフラグを設定する必要があります。

于 2010-07-28T03:33:01.507 に答える
0

コンテキスト メニューの close イベントで Application.Exit() を呼び出すだけです。

于 2010-07-28T03:35:52.920 に答える