如何从Alt-Tab切换器隐藏窗口?

时间:2014-02-28 09:52:16

标签: c# winforms system-tray trayicon alt-tab

我有一个winforms应用程序,在单击关闭按钮时,我将其隐藏在托盘菜单中。我在这里使用了trayicon和notifyicon。以下是代码

用于最小化系统托盘

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,我可以查看该应用程序。使用该应用程序可以将其恢复为原始格式,而不是从系统托盘中单击。

我查看过这些例子

How do I minimize a WinForms application to the notification area?

Best way to hide a window from the Alt-Tab program switcher?

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

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

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:0)

如我的评论中所述,使用Show()和Hide()。创建一个新表单,添加一个按钮,双击该按钮并添加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()部分留给你。