关闭应用程序后的ProcessCmdKey

时间:2012-09-05 19:24:57

标签: c# keypress keydown notifyicon

如果我按 Ctrl + A Ctrl ,我会为ProcessCmdKey运行一些按钮+ N ,或 Ctrl + S

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    if (keyData == (Keys.Control | Keys.N))
    {
        button4_Click(this, null);
        return true;
    }

    if (keyData == (Keys.Control | Keys.A))
    {
        button3_Click(this, null);
        return true;
    }

    if (keyData == (Keys.Control | Keys.S))
    {
        label10_Click(this, null);
        return true;
    }

    return base.ProcessCmdKey(ref msg, keyData);
}

我有一个问题,可以在关闭应用程序(不是关机应用程序)之后,使用Form_Closing将应用程序放入System Icons使用notifyIcon,如果您要按 Ctrl + A (例如),会运行按钮吗?

现在它不起作用,但我可以这样做吗?

1 个答案:

答案 0 :(得分:1)

要设置托盘图标,请参阅此guide

您可以通过项目属性>设置项目的图标。申请>图标

您可以像这样隐藏任务栏中的窗口:

this.ShowInTaskbar = false;

此代码将停止关闭表单并将其隐藏(除非Windows正在关闭)。

protected override void OnFormClosing(FormClosingEventArgs e)
{
    base.OnFormClosing(e);

    if (e.CloseReason == CloseReason.WindowsShutDown) 
    {
        return;
    }

    e.Cancel = true;

    this.WindowState = FormWindowState.Minimized
}

此代码将为您提供托盘图标,并在双击时重新显示表单。

    public MyForm()
    {
        InitializeComponent();

        NotifyIcon trayIcon = new NotifyIcon()
        {
            Icon = new Icon(@"C:\Temp\MyIcon.ico"),
            BalloonTipText = "Open Me!",
            Visible = true
        };

        trayIcon.DoubleClick += new EventHandler(trayIcon_DoubleClick);
    }

    public void trayIcon_DoubleClick(object sender, EventArgs e)
    {
        this.ShowInTaskbar = false;
        this.WindowState = FormWindowState.Normal;
    }