我有一个由C#和Visual Studio2010支持的Windows forms应用程序。
我如何最小化我的应用程序到系统托盘(不是任务栏),然后当双击系统托盘时把它带回来?有什么想法吗?另外,我如何在系统托盘的图标中制作一些菜单,当我右键单击它时,它会显示一个类似登录、断开连接、连接之类的菜单。另外,有没有什么方法可以像从系统托盘中弹出的气球一样显示?
PS:我已经添加了一个notifyIcon,但我不知道如何使用它。
发布于 2011-10-02 16:53:57
处理窗体的Resize事件。在此处理程序中,重写Resize事件的基本功能以使窗体最小化到系统托盘而不是任务栏。这可以通过在窗体的Resize事件处理程序中执行以下操作来完成:检查窗体的WindowState属性是否设置为FormWindowState.Minimized。如果是,请隐藏窗体,启用NotifyIcon对象,并显示显示某些信息的气球提示。WindowState变为FormWindowState.Normal后,通过将其Visible属性设置为false来禁用NotifyIcon对象。现在,您希望在双击任务栏中的NotifyIcon对象时窗口重新出现。为此,处理NotifyIcon的MouseDoubleClick事件。在这里,您将使用Show()方法显示表单。
private void frmMain_Resize(object sender, EventArgs e)
{
if (FormWindowState.Minimized == this.WindowState)
{
mynotifyicon.Visible = true;
mynotifyicon.ShowBalloonTip(500);
this.Hide();
}
else if (FormWindowState.Normal == this.WindowState)
{
mynotifyicon.Visible = false;
}
}发布于 2013-04-23 15:40:09
我发现这就完成了整个解决方案。上面的答案无法从任务栏中删除窗口。
private void ImportStatusForm_Resize(object sender, EventArgs e)
{
if (this.WindowState == FormWindowState.Minimized)
{
notifyIcon.Visible = true;
notifyIcon.ShowBalloonTip(3000);
this.ShowInTaskbar = false;
}
}
private void notifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.WindowState = FormWindowState.Normal;
this.ShowInTaskbar = true;
notifyIcon.Visible = false;
}此外,最好使用窗体设计器设置notify图标控件的以下属性。
this.notifyIcon.BalloonTipIcon = System.Windows.Forms.ToolTipIcon.Info; //Shows the info icon so the user doesn't think there is an error.
this.notifyIcon.BalloonTipText = "[Balloon Text when Minimized]";
this.notifyIcon.BalloonTipTitle = "[Balloon Title when Minimized]";
this.notifyIcon.Icon = ((System.Drawing.Icon)(resources.GetObject("notifyIcon.Icon"))); //The tray icon to use
this.notifyIcon.Text = "[Message shown when hovering over tray icon]";发布于 2014-05-22 00:47:49
如果是我的话
private void Form1_Resize(object sender, EventArgs e)
{
if (FormWindowState.Minimized == this.WindowState)
{
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(500);
this.Hide();
}
else if (FormWindowState.Normal == this.WindowState)
{
notifyIcon1.Visible = false;
}
}
private void notifyIcon1_MouseDoubleClick(object sender, MouseEventArgs e)
{
this.Show();
this.WindowState = FormWindowState.Normal;
}https://stackoverflow.com/questions/7625421
复制相似问题