C# (江湖熟手)- 实现程序托盘

程序托盘

我们做的很多程序都要求实现托盘功能,比如之前常用的qq或微信 等等。 本文以简单的Demo来演示托盘程序

效果演示 (注:本案例用的是qq的图标

素材准备

两个 icon 格式的图片(一个表示在线,一个表示离线),用来作为程序托盘的图标

第一步:将 NotifyIcon 控件,拖到主窗体中,并在窗体中添加两个按钮(在线、离线)

第二步:将contextMenuStrip控件,拖到主窗体中

  • 设置一个 退出 菜单  (用作,鼠标在托盘图标右键菜单
  • 双击 退出 ,自动生成单击方法。 在方法中编写代码 this.Close();  表示关闭程序
  • 将上面的 notifyicon 控件的 contextMenuStrip 属性,设置为当前的 contextMenuStrip

 

 

第三步:在主窗体的 Form1_Load 方法中初始化 notifyicon的属性

  • 在项目中新建一个文件夹 ,重命名为 icon,用来存放使用到的ico 图标(放到资源管理中也行)
  • 在Form1_Load 方法中初始化 notifyicon的属性

private void Form1_Load(object sender, EventArgs e)
{
	// 初始化
	this.notifyIcon1.Icon = new Icon(@"D:\c#workspace\练习demo\托盘程序实现\icon\qq彩色.ico");
	this.notifyIcon1.Visible = true; //显示图标
	this.notifyIcon1.Text = "在线";  // 鼠标悬浮图标上时 提示文案
}

第四步:给主窗体添加一个 FormCloing 事件(表示关闭程序时可进入托盘)

private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
	DialogResult result = MessageBox.Show("是否退出?选否,最小化到托盘", "操作提示", MessageBoxButtons.YesNoCancel, MessageBoxIcon.Question);
	if (result == DialogResult.Yes)
	{
		this.Dispose();
		Application.Exit();
	}
	else
	{
		e.Cancel = true;
		this.WindowState = FormWindowState.Minimized;
		this.Visible = false;
		this.notifyIcon1.Visible = true;
	}
}

第五步:给托盘图标添加一个鼠标单击事件,程序托盘后用来打开程序界面

private void notifyIcon1_MouseClick(object sender, MouseEventArgs e)
{
	// 单击左键,打开程序
	if (e.Button == MouseButtons.Left)
	{
		this.Show();
		this.Focus();
		this.WindowState = FormWindowState.Normal;
	}
}

第六步:添加 在线与离线按钮的单击事件,代码逻辑如下

  • 在线:将托盘图标更换成表示 在线 的图片
  • 离线:将托盘图标更换成表示 离线 的图片
private void button1_Click(object sender, EventArgs e)
{
	this.notifyIcon1.Icon = new Icon(@"D:\c#workspace\练习demo\托盘程序实现\icon\qq彩色.ico");
	this.notifyIcon1.Text = "在线";
}

private void button2_Click(object sender, EventArgs e)
{
	this.notifyIcon1.Icon = new Icon(@"D:\c#workspace\练习demo\托盘程序实现\icon\qq黑白色.ico");
	this.notifyIcon1.Text = "离线";
}

完成以上步骤,托盘程序即可正常运行!!!!

最后注意,托盘的图标必须是 icon 格式的图片!!!

 更多**好看的内容**和**好玩的案例**请关注**我的微信公众号: 程序猿知秋**

  • 4
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值