【问题标题】:C# close to tray (like msn messenger)C# 靠近托盘(如 msn messenger)
【发布时间】:2010-07-28 03:27:38
【问题描述】:

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

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

但是,我遇到的问题是,如果窗口可见,但他们右键单击托盘图标的上下文菜单并点击退出,我需要退出程序而不是最小化。

我该如何解决这个问题?

【问题讨论】:

  • Application.exit() 不起作用,因为它仍然会触发表单关闭事件。我认为,正如一些人提到的,我需要使用一个标志来指示请求来自哪里(托盘菜单与 x 按钮)

标签: c# minimize tray


【解决方案1】:

试试这个:

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;
    }
}

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

【讨论】:

    【解决方案2】:

    您可能希望根据用户的操作来跟踪应用程序的状态,因为这不一定反映在窗口的状态中。因此,当用户从菜单中选择退出时,您需要设置一个标志来表明您确实正在退出,而不仅仅是隐藏窗口。

    【讨论】:

      【解决方案3】:

      只需让您的上下文菜单关闭事件调用 Application.Exit()

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-11-09
        • 1970-01-01
        • 1970-01-01
        • 2011-06-10
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多