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.运 ...
随机推荐
- debian sudo
apt-get install sudo vi /etc/sudoers add CentOS 7 root ALL=(ALL) ALL Debian root ALL=(ALL:ALL) ALL 按 ...
- selenium+Python(事件)
1.操作测试对象前面讲到了不少知识都是定位元素,定位只是第一步,定位之后需要对这个元素进行操作.鼠标点击或者键盘输入,这要取决于我们定位的是按钮还输入框.一般来说,webdriver 中比较常用的操作 ...
- CoreJava笔记之线程
程序,进程和线程程序:没有执行的指令序列和相关的数据的集合(如:qq.exe) 如:磁盘上的可执行命令进程:正在执行的程序,进程占用资源(CPU,Memoary,IO)线程:是进程中并发执行的过程(共 ...
- document.referrer的使用和window.opener 跟 window.parent 的区别
偶尔看到了document.referrer,之前一直有点疑惑与window.opener 和 window.parent之间的区别 首先查了一下w3cSCHOOL, 上面的解释:referrer 属 ...
- MySql的视图
视图是从一个或多个表中导出的表.是一种虚拟存在的表.视图就像一个窗口,通过这个窗口可以看到系统专门提供的数据.这样,用户可以不用看到整个数据库表中数据,而只关心对自己有用的数据.视图可以使用户的操作更 ...
- 针对浏览器不支持JavaScript的简单处理
简单的思路是这样的: 在网页中显示某些内容,作为不支持JS的提示, 然后在页面载人的时候执行一段JS代码,代码的功能就是隐藏那个提示不支持JS的代码 具体内容看例子: <html> < ...
- lighttpd 与 gitweb 搭建服务器
搭建 Git 仓库服务器 下载 gitweb 如果是用 debian 系的 Linux 发行版,可以使用 apt 下载安装可执行的 gitweb sudo apt-get install gitweb ...
- no jpeg in java.library.path;java.lang.NoClassDefFoundError: Could not initialize class sun.awt.image.codec.JPEGImageEncoderImpl
no jpeg in java.library.path;java.lang.NoClassDefFoundError: Could not initialize class sun.awt.imag ...
- linux免密登录ssh验证配置方法及常见错误解决
目标:从服务器A免密登录服务器B [配置方法] 1.在服务器A生成密钥文件,直接使用以下命令: ssh-keygen 中间遇到输入内容一路回车即可,完成后会在 ~/.ssh 目录下生成两个文件:id_ ...
- Java API 之 正则表达式
一.基本概念 在项目中我们经常性做的一件事是“匹配”字符串 比如: 1.我们要验证用户输入的手机号是否合法? 2.验证设置的密码是否符合规则? 3.或者替换指定字符串中的一些内容. 这么一看,似乎正则 ...