C#靠近托盘(如msn messenger)

And*_*Hin 5 c# minimize tray

我有#.net应用程序.所以我创建了一个位于托盘中的notifyIcon.我想要做的是当用户点击表单上的"x"按钮时,我希望它靠近托盘.他们应该只能使用托盘图标中的上下文菜单退出程序.

所以我所做的是,在表单关闭事件中,我检查表单是否可见.如果它的可见的,我把它设置为不可见,并设置showInTaskbar为假(模拟最小化到托盘),如果表单是不可见已经,那么他们可能从托盘关闭,所以我将退出在这种情况下的程序.

不过,我的问题是,如果窗口是可见的,但他们右键单击托盘图标,并创下出口的上下文菜单上,我需要退出程序,而不是减少.

我该如何解决这个问题?

The*_*iot 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;
    }
}
Run Code Online (Sandbox Code Playgroud)

或者,如果您只有一种表单,您可以Application.Exit();在上下文菜单项处理程序中调用