C#winform怎样实现托盘

如题所述

现在很多程序都有这样的托盘程序
窗体关闭时,并不真正关闭程序,只是任务栏不显示该应用程序,在右下侧托盘里显示;
双击托盘,窗体还原;
右击窗体,出现托盘菜单,实现最小化,最大户,还原,退出等。
这样的功能C#winform怎样实现呢 ?
实现
WinForm中托盘菜单由NotifyIcon控件来实现,右键菜单由contextMenuStrip来实现,我们将二者相关联,即可实现我们所期望功能的托盘程序。
添加控件
我们在需要托盘的form界面上拖入NotifyIcon和一个ContextMenuStrip控件。

设置控件信息
设置控件的属性为我们期望的功能,
如本例中NotifyIcon控件名NAME为“mainNotifyIcon”,ContextMenuStrip控件名NAME为”mainNotifyContextMenuStrip”)

Icon为托盘图标,Text托盘显示文字,ContextMenuStrip右键菜单(退出),设置退出单击事件,我们将mainNotifyIcon的ContextMenuStrip属性设置为mainNotifyContextMenuStrip,即可实现该托盘与右键菜单的关联,在托盘上右键即出现右键菜单
我们开始添加右键菜单的各个选项,比如:最小化,最大化,还原,退出等

实现事件关联
添加主窗体关闭事件(FormClosing)

// 只有Form_Closing事件中 e.Cancel可以用。
// 你的是Form_Closed事件。 Form_Closed事件时窗口已关了 ,Cancel没用了;
// Form_Closing是窗口即将关闭时询问你是不是真的关闭才有Cancel事件

private void MainWindow_FormClosing(object sender, FormClosingEventArgs e)
{

// 注意判断关闭事件reason来源于窗体按钮,否则用菜单退出时无法退出!
if (e.CloseReason == CloseReason.UserClosing)
{
//取消"关闭窗口"事件
e.Cancel = true; // 取消关闭窗体

//使关闭时窗口向右下角缩小的效果
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible = true;
//this.m_cartoonForm.CartoonClose();
this.Hide();
return;
}
}123456789101112131415161718192021123456789101112131415161718192021

这样我们就实现了单击关闭时,不真正关闭程序,而是将主界面隐藏HIDE掉,同时开始显示托盘菜单。
实现双击托盘打开主程序

// 添加托盘程序
// 版本更新自1.0.1
private void mainNotifyIcon_MouseDoubleClick(object sender, MouseEventArgs e)
{
if (this.Visible)
{
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible = true;
this.Hide();
}
else
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
this.Activate();
}
}12345678910111213141516171234567891011121314151617

右键菜单实现最小化最大化还原和退出
// 添加托盘程序右键菜单项
// 版本更新自1.0.1
// 最小化
// 添加日期 -- 2015-07-29 21:40
private void toolStripMenuItemMinimize_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Minimized;
this.mainNotifyIcon.Visible = true;
this.Hide();
}

// 添加托盘程序右键菜单项
// 版本更新自1.0.1
// 最大化
// 添加日期 -- 2015-07-29 21:41
private void toolStripMenuItemMaximize_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Maximized;
this.mainNotifyIcon.Visible = true;
this.Show();
}

// 添加托盘程序右键菜单项
// 版本更新自1.0.1
// 还原
// 添加日期 -- 2015-07-29 21:43
private void toolStripMenuItemNormal_Click(object sender, EventArgs e)
{
this.WindowState = FormWindowState.Normal;
this.mainNotifyIcon.Visible = true;
//this.m_cartoonForm.CartoonShowNormal();
this.Show();
}

// 添加托盘程序右键菜单项
// 版本更新自1.0.1
// 退出
// 添加日期 -- 2015-07-29 21:44
private async void toolStripMenuItemQuit_Click(object sender, EventArgs e)
{
if (MessageBox.Show("你确定要退出?", "系统提示", MessageBoxButtons.YesNo, MessageBoxIcon.Information, MessageBoxDefaultButton.Button1) == DialogResult.Yes)
{

this.mainNotifyIcon.Visible = false;
this.Close();
this.Dispose();
System.Environment.Exit(System.Environment.ExitCode);

}
}
}
温馨提示:内容为网友见解,仅供参考
无其他回答

C#winform怎样实现托盘
双击托盘,窗体还原;右击窗体,出现托盘菜单,实现最小化,最大户,还原,退出等。这样的功能C#winform怎样实现呢 ?实现 WinForm中托盘菜单由NotifyIcon控件来实现,右键菜单由contextMenuStrip来实现,我们将二者相关联,即可实现我们所期望功能的托盘程序。添加控件 我们在需要托盘的form界面上拖入NotifyIcon和...

C#winform中怎么将程序最小化到系统托盘
1.在form中添加一个NotifyIcon控件 2.把87.ico这个图标放在binDebug目录下 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Text; using System.Windows.Forms; namespace 将程序最小化到系统托盘 { public partial c...

C#怎么做系统托盘啊
先将窗体的Text属性设置为"动画系统图标示例",MaximiseBox、MinimiseBox、ShowInTaskbar属性均设置为False。再往窗体上添加NotifyIcon控件、ContextMenu控件各一个。将NotifyIcon控件的Icon属性设置为一个图标文件,Name属性设置为“m_trayIcon”;ContextMenu属性设置为"contextMenu1";接下来开始编辑ContextMenu控...

【C#】WinForm中如何让窗口最小化时直接最小化到托盘,后台运行
1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。3.添加窗体最小化事件(首先需要添加事件引用):代码如下:this.SizeChanged += new System.EventHandler(this.Form1_SizeChanged);\/\/上面一行是主窗体InitializeComponent()方法中需要添加的...

C#实现WinForm程序的动态系统托图标
C#实现WinForm程序的动态系统托图标[Flash]发表时间:2007年10月27日 3时45分0秒 评论\/阅读(0\/1)1.在主窗体中添加一个 NotifyIcon 控件-notifyIcon1 2.在主窗体中添加一个 ContextMenu 控件-contextMenu1,并添加菜单项 3.设置 notifyIcon1 的属性:将notifyIcon1.ContextMenu 设置为 contextMenu...

C# winfrom开发中如何实现在程序已最小化到系统托盘
用notifyIcon控件可以实现,可以更换托盘的图标,不过图片格式为.ico所以一般的jpg图片要转换成ico才可用

我用C#写了一个程序可以最小化到托盘,恢复代码我忘了,还望大侠们指点江...
一、添加notifyIcon控件 二、加入方法 \/\/实现.net系统托盘 \/\/隐藏程序显示托盘,notifyIcon 是.net自带的NotifyIcon控件,要显示托盘需要设置notifyIcon的显示图标 \/\/没有要显示的图标,托盘是不会显示的 private void menuItem13_Click(object sender, System.EventArgs e){ notifyIcon1.Visible = true;this....

C# 如何将某一个应用程序最小化到任务托盘!
如果不是:这要取决于你使用的应用程序有没有最小化到托盘的功能.如果是:C#编写最小化时隐藏为任务栏图标的 Window appllication.1.设置WinForm窗体属性showinTask=false 2.加notifyicon控件notifyIcon1,为控件notifyIcon1的属性Icon添加一个icon图标。3.添加窗体最小化事件(首先需要添加事件引用):this....

c#窗体点击关闭按钮怎么最小化到托盘中而不退出程序?
楼主你好~可以在窗体的Closing事件中进行操作,大约如下:privatevoid Form1_Closing(object sender, System.ComponentModel.CancelEventArgs e){ \/\/ 取消关闭窗体 e.Cancel = true;\/\/ 将窗体变为最小化 this.WindowState = FormWindowState.Minimized;} 如果要实现最小化到托盘,则必须在窗体内加入控件...

怎么用c#语句让调用出来的程序最小化到托盘!—就是调用之后不显示窗口...
c#搞托盘很简单的,下面的文章有详细讲解 http:\/\/blog.csdn.net\/gztoby\/archive\/2004\/09\/19\/109726.aspx 不过你的问题首先要你调用的程序支持托盘,也就是那个程序本身可以托盘。祝你好运!

相似回答