主要功能:

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# 程序启动最小化至任务栏及闪烁的更多相关文章

  1. C# winForm启动最小化到任务栏右侧通知栏并交互操作

    原文链接:http://blog.sina.com.cn/s/blog_45eaa01a01013u36.html C# winForm启动最小化到任务栏右侧通知栏并交互操作 一.主要功能:(1).程 ...

  2. C# winForm 开机自动启动 并启动后最小化到任务栏 右侧通知栏并交互操作

    //设置自动启动 string path = Application.StartupPath; SettingHel.SetAutoRun(path +@"\MostImpressive.D ...

  3. VC++ 实现VC程序启动时最小化到任务栏(完美解决闪烁问题)

    之前写的一个VC应用程序,是程序启动时就直接出现在任务栏, 窗体不出现,等用户点击任务栏图标再出现窗口.和一些防火墙什么的软件类似. 这种效果实现并不是很困难的,硬是找不到最好的.为什么呢? 首先,在 ...

  4. delphi如何让程序最小化到任务栏(转)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  5. Delphi如何让程序最小化到任务栏(截取WM_SYSCOMMAND后,调用Shell_NotifyIcon)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  6. C# 设置程序最小化到任务栏右下角,鼠标左键单击还原,右键提示关闭程序

    首先设置程序最小化到任务栏右下角 先给窗口添加一个notifyIcon控件 为notifyIcon控件设置ICO图标(不设置图标将无法在任务栏显示) 给notifyIcon控件添加点击事件 然后是最小 ...

  7. delphi如何让程序最小化到任务栏(使用Shell_NotifyIcon API函数)

    现在很多的应用程序都有这样一种功能,当用户选择最小化窗口时,窗口不是象平常那样最小化到任务栏上,而是“最小化”成一个任务栏图标.象FoxMail 3.0 NetVampire 3.0等都提供了这样的功 ...

  8. 将VMware虚拟机最小化到托盘栏

    版权:本文采用「署名-非商业性使用-相同方式共享 4.0 国际」知识共享许可协议进行许可.   目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayco ...

  9. 将VMware工作站最小化到托盘栏

    目录 前言 将VMware最小化到托盘栏的方法 1.下载 Trayconizer 2.解压 trayconizerw.zip 3.创建 VMware 快捷方式 4.修改 VMware 快捷方式 5.运 ...

随机推荐

  1. .net core 的优点

    [1]为什么使用.net core 首先.net core 是一个跨平台的高性能开源框架用具生成基于云连接的Internet的新的应用程序,可以建造web应用程序和服务,lot应用和移动后端,可以在W ...

  2. 使用Filter解决登录中乱码问题

    使用Filter解决登录中乱码问题 衔接:https://www.cnblogs.com/zst18980621948/p/10654088.html 1.工作目录 新增Filter类 2.Login ...

  3. Partition Array by Odd and Even

    Partition an integers array into odd number first and even number second. Example Given [, , , ], , ...

  4. 一篇在一个Excel表中创建多个sheet的代码

    package projectUtil; import org.apache.commons.lang3.StringUtils; import org.apache.poi.hssf.usermod ...

  5. J15W-J45W黄铜截止阀厂家,J15W-J45W黄铜截止阀价格 - 专题栏目 - 无极资讯网

    无极资讯网 首页 最新资讯 最新图集 最新标签   搜索 J15W-J45W黄铜截止阀 无极资讯网精心为您挑选了(J15W-J45W黄铜截止阀)信息,其中包含了(J15W-J45W黄铜截止阀)厂家,( ...

  6. Java - 自定义异常(尚学堂第六章异常机制作业计算平均数)

    编写一个计算N个学生分数平均分的程序.程序应该提示用户输入N的值,如何必须输入所有N个学生分数.如果用户输入的分数是一个负数,则应该抛出一个异常并捕获,提示“分数必须是正数或者0”.并提示用户再次输入 ...

  7. (转)python标准库中socket模块详解

    python标准库中socket模块详解 socket模块简介 原文:http://www.lybbn.cn/data/datas.php?yw=71 网络上的两个程序通过一个双向的通信连接实现数据的 ...

  8. 我的Python升级打怪之路【三】:Python函数

    函数 在函数之前,我们一直遵循者:面向过程编程,即:根据业务逻辑从上到下实现功能,开发过程中最常见的就是粘贴复制.代码就没有重复利用率. 例如:有好多的重复的代码 if 条件: 发送指令 接收结果 e ...

  9. MySQL备份和还原数据

    MySQL备份和还原数据 导出整个数据库 mysqldump -uroot -p database_name > db_backup.sql 导入整个数据库 mysql -uroot -p da ...

  10. FocusBI: SQL Server内核

    关注微信公众号:FocusBI 查看更多文章:加QQ群:808774277 获取学习资料和一起探讨问题. <商业智能教程>pdf下载地址 链接:https://pan.baidu.com/ ...