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.运 ...
随机推荐
- Laravel 视图调用model方法
首先控制器 model 视图
- Ubuntu16.04+Cuda8.0+cuDNN6配置py-faster rcnn(转)
原博客地址:https://blog.csdn.net/meccaendless/article/details/79557162 0前言Faster R-CNN是任少卿2015年底推出的目标检测算法 ...
- JSON 请求太大,无法反序列化。
在post请求中数据太大导致报500错误.错误提示 JSON 请求太大,无法反序列化. 在config中加 <system.web.extensions> <scripting> ...
- ViewData与ViewBag的区别
本文导读:在asp.net mvc程序设计中,传递数据常常会用到viewdata.viewbag.ViewData是一个字典集合,通过key值读取对应的value:ViewBag是动态类型,作用和Vi ...
- Python学习--两种方法爬取网页图片(requests/urllib)
实际上,简单的图片爬虫就三个步骤: 获取网页代码 使用正则表达式,寻找图片链接 下载图片链接资源到电脑 下面以博客园为例子,不同的网站可能需要更改正则表达式形式. requests版本: import ...
- JetBrains PyCharm(Professional版本)的下载、安装和初步使用
不多说,直接上干货! 首先谈及这款软件,博主我用的理由:搞机器学习和深度学习! 想学习Python的同学们,在这里隆重介绍一款 Python 的开发工具 pyCharm IDE.这是我最喜欢的 Pyt ...
- 【javascript】jq之display:none与visible:hidden
今天学习到jquery的hide()部分时,突然有一个想法,jquery中的隐藏/显示部分的实现是给目标元素附加一个"display: none"属性,那么如果在类似于下面的布局中 ...
- Learning Linux Commands: awk--reference
http://how-to.linuxcareer.com/learning-linux-commands-awk 1. Introduction In this case, the title mi ...
- Java入门系列-15-封装
为什么要封装 Student stu=new Student(); stu.age=-10; 上面的代码中 age 属性被随意访问,容易产生不合理的赋值 什么是封装 封装:将类的某些信息隐藏在内部,不 ...
- Django models.py创建数据库
创建完后初始化数据库 在命令行里输入: 回车后出现 继续命令行输入: