我有一个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切换器中可见,我很好。
任何帮助将不胜感激
答案 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()部分留给你。