0

我有一个 winforms 应用程序,当单击关闭按钮时,我将其隐藏在托盘菜单中。我在此使用了托盘图标和通知图标。以下是代码

用于最小化到系统托盘

public void MinimizeToTray()
{
    try
    {
        this.WindowState = FormWindowState.Minimized;
        TrayIcon.Visible = true;
        TrayIcon.ShowBalloonTip(1000);
        ShowInTaskbar = false;
    }
    catch (Exception ex)
    {
        MessageBox.Show(ex.Message);
    }
}

//Load the tray menu
private void LoadTrayMenu()
{
    TrayMenu.Items.Add("Exit");
    TrayMenu.Items[0].Click += new System.EventHandler(this.Dispose_Click);
    TrayIcon.ContextMenuStrip = TrayMenu;
}

//Close the application
private void Dispose_Click(object Sender, EventArgs e)
{
    TrayIcon.Visible = false;
    TrayIcon.Icon = null;
    Application.Exit();
}

上面的部分对我来说很好,即我可以将应用程序最小化到托盘菜单,然后重新调整到原始表单的大小,然后关闭它。但是当应用程序最小化到系统托盘时,如果当时我按 All-Tab 我可以查看应用程序。使用它可以将应用程序恢复到原始表单,而不是从系统托盘单击。

我看过这些例子

如何将 WinForms 应用程序最小化到通知区域?

从 Alt-Tab 程序切换器隐藏窗口的最佳方法?

但是,当应用程序位于系统托盘中时,它们都没有显示如何从 Alt-Tab 切换器中隐藏应用程序。

当应用程序不在系统托盘中时,如果应用程序在 Alt-Tab 切换器中可见,我很好。

任何帮助,将不胜感激

4

1 回答 1

0

正如我的评论中所述,使用 Show() 和 Hide()。新建一个Form,添加一个按钮,双击按钮,添加button1_Click的代码。我在 Windows 7 x64 上使用 C# (.NET 4)、Visual Studio 2012。

工作正常。Windows 既不会显示在 Alt+Tab 中,也不会显示在 Win+Tab 中。

using System;
using System.Drawing;
using System.Windows.Forms;

namespace TrayIconExample
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private NotifyIcon icon;
        private void button1_Click(object sender, EventArgs e)
        {
            icon = new NotifyIcon
            {
                Icon = new Icon(@"C:\Program Files (x86)\Winspector\class-icons\#32768.ico"),
                Visible = true
            };
            Hide();
        }
    }
}

我把 Show() 部分留给你。

于 2014-02-28T12:41:12.837 回答