C# 程序启动最小化至任务栏及闪烁
主要功能:
C#让窗体最小化至任务栏,同时在系统托盘区的图标点击左键能显示窗体,并使窗体闪烁。
首先:
创建窗体应用程序,并添加控件NotifyIcon及ContextMenuStrip控件
NotifyIcon:点击notifyIcon1属性,为控件属性Icon添加图标
contextMenuStrip1属性,进入Items添加或右键"编辑项".添加4个toolStripMenuItem,设置其Text为"显示窗体"、"隐藏窗体"、"开始闪烁"、"退出"
代码:
点击窗体"关闭"按钮时,取消关闭操作且窗体隐藏,任务栏图标仍然显示:
//窗体关闭前发生事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true; //取消关闭操作 表现为不关闭窗体
this.Hide(); //隐藏窗体
}
}
1.左键点击图标时,显示窗体.
2.当鼠标右键点击图标时,显示"显示窗体"\"隐藏窗体"\"闪烁"\"退出"菜单栏,并有相对应的功能
//"显示窗体"单击事件
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show(); //窗体显示
this.WindowState = FormWindowState.Normal; //窗体状态默认大小
this.Activate();
}
//"隐藏窗体"单击事件
private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide(); //隐藏窗体
}
//"退出"单击事件
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
//点击"是(YES)"退出程序
if (MessageBox.Show("确定要退出程序?", "安全提示",
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Warning)
== System.Windows.Forms.DialogResult.Yes)
{
notifyIcon1.Visible = false; //设置图标不可见
this.Close(); //关闭窗体
this.Dispose(); //释放资源
Application.Exit(); //关闭应用程序窗体
}
}
鼠标左键图标显示窗体功能
//鼠标左键图标事件
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
//点击鼠标"左键"发生
if (e.Button == MouseButtons.Left)
{
this.Visible = true; //窗体可见
this.WindowState = FormWindowState.Normal; //窗体默认大小
this.notifyIcon1.Visible = true; //设置图标可见
}
}
图标闪烁
闪烁的效果是加上一个空白的图标,正常图标与空白图标的切换进而实现闪烁的效果。
property是vs的一个资源管理功能,可以存储系统图标及一些常量

private Icon timg = Properties.Resources.timg;
private Icon blank = Properties.Resources.blank;//透明的图标
private bool _status = true;
private bool _isBlink = false;
右键菜单控制图标是不是显示
private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
if (_isBlink == false)
{
_isBlink = true;
timer1.Enabled = true;
timer1.Start();
}
else
{
_isBlink = false;
timer1.Stop();
//气泡提示
notifyIcon1.ShowBalloonTip(, "提示", "关闭闪烁效果!", ToolTipIcon.Info);
}
}
定时器中修改图标的状态,定时反转图标
private void timer1_Tick(object sender, EventArgs e)
{ if (_status)
notifyIcon1.Icon = timg;
else
notifyIcon1.Icon = blank; _status = !_status;
}

完整代码:
public partial class Form1 : Form
{
private Icon timg = Properties.Resources.timg;
private Icon blank = Properties.Resources.blank;//透明的图标
private bool _status = true;
private bool _isBlink = false;
public Form1()
{
InitializeComponent();
} //窗体关闭前发生事件
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
if (e.CloseReason == CloseReason.UserClosing)
{
e.Cancel = true; //取消关闭操作 表现为不关闭窗体
this.Hide(); //隐藏窗体
}
}
//"显示窗体"单击事件
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Show(); //窗体显示
this.WindowState = FormWindowState.Normal; //窗体状态默认大小
this.Activate();
}
//"隐藏窗体"单击事件
private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.Hide(); //隐藏窗体
}
//"退出"单击事件
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
//点击"是(YES)"退出程序
if (MessageBox.Show("确定要退出程序?", "安全提示",
System.Windows.Forms.MessageBoxButtons.YesNo,
System.Windows.Forms.MessageBoxIcon.Warning)
== System.Windows.Forms.DialogResult.Yes)
{
notifyIcon1.Visible = false; //设置图标不可见
this.Close(); //关闭窗体
this.Dispose(); //释放资源
Application.Exit(); //关闭应用程序窗体
}
}
//鼠标左键图标事件
private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
//点击鼠标"左键"发生
if (e.Button == MouseButtons.Left)
{
this.Visible = true; //窗体可见
this.WindowState = FormWindowState.Normal; //窗体默认大小
this.notifyIcon1.Visible = true; //设置图标可见
}
} private void toolStripMenuItem1_Click(object sender, EventArgs e)
{
if (_isBlink == false)
{
_isBlink = true;
timer1.Enabled = true;
timer1.Start();
}
else
{
_isBlink = false;
timer1.Stop();
//气泡提示
notifyIcon1.ShowBalloonTip(, "提示", "关闭闪烁效果!", ToolTipIcon.Info);
}
}
private void timer1_Tick(object sender, EventArgs e)
{ if (_status)
notifyIcon1.Icon = timg;
else
notifyIcon1.Icon = blank; _status = !_status;
} }
C# 程序启动最小化至任务栏及闪烁的更多相关文章
- C# winForm启动最小化到任务栏右侧通知栏并交互操作
原文链接:http://blog.sina.com.cn/s/blog_45eaa01a01013u36.html C# winForm启动最小化到任务栏右侧通知栏并交互操作 一.主要功能:(1).程 ...
- C# winForm 开机自动启动 并启动后最小化到任务栏 右侧通知栏并交互操作
//设置自动启动 string path = Application.StartupPath; SettingHel.SetAutoRun(path +@"\MostImpressive.D ...
- VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)
之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...
- delphi如何让程序最小化到任务栏(转)
现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...
- Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)
现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...
- C# 设置程序最小化到任务栏右下角,鼠标左键单击还原,右键提示关闭程序
首先设置程序最小化到任务栏右下角 先给窗口添加一个notifyIcon控件 为notifyIcon控件设置ICO图标(不设置图标将无法在任务栏显示) 给notifyIcon控件添加点击事件 然后是最小 ...
- delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)
现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...
- 将VMware虚拟机最小化到托盘栏
版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可. 目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...
- 将VMware工作站最小化到托盘栏
目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...
随机推荐
- js 常用基本知识
Object.isObject = function(obj){ return obj != null && typeof obj === 'object' && Ar ...
- POJ 2253 Frogger ,poj3660Cow Contest(判断绝对顺序)(最短路,floyed)
POJ 2253 Frogger题目意思就是求所有路径中最大路径中的最小值. #include<iostream> #include<cstdio> #include<s ...
- cookie session token详解
cookie session token详解 转自:http://www.cnblogs.com/moyand/ 发展史 1.很久很久以前,Web 基本上就是文档的浏览而已, 既然是浏览,作为服务器, ...
- idea没有tomcat选项在setting也没有Application Servers
原因:dea未正常关闭,重启后发现,Tomcat的选项不见了,File->Setting->Build,Excution,Deployment里面Application Servers也不 ...
- 面经问题总结——django相关
1.让你从头设计一个web框架,第一步你会做什么? 2.django的orm是怎么实现的? 3.django的URL路径映射是怎么实现的? 4.平常你怎么运用django提供的钩子函数? 5.三级分销 ...
- SC OpenService 失败5:拒绝访问
当我们在cmd里使用 sc delete 服务名 ,来删除服务的时候,报错误,SC OpenService 失败5:拒绝访问. 这似乎是因为权限不够,解决方法. 首先,我们必须先取得管理员权限,以 ...
- JAVA学习7:在Maven仓库中添加Oracle JDBC驱动
由于Oracle授权问题,Maven3不提供Oracle JDBC driver,为了在Maven项目中应用Oracle JDBC driver,必须手动添加到本地仓库. 一.首先要得到Oracle ...
- tar压缩命令
01-.tar格式解包:[*******]$ tar xvf FileName.tar打包:[*******]$ tar cvf FileName.tar DirName(注:tar是打包,不是压缩! ...
- Java生成二维码和解析二维码URL
二维码依赖jar包,zxing <!-- 二维码依赖 start --><dependency> <groupId>com.google.zxing</gro ...
- 我该不该学习C语言
这几天把c语言过了一遍,基本上算是入门了,常用语法.函数的使用.c语言是比较古老的语言了,很多系统的底层.工业控制软件都是使用C语言编写,过一遍之后觉得c语言屹立不倒是有原因.c程序员有一句话:使用c ...