前言
和大家分享
一个如何将我们的程序隐藏到系统托盘中的小Demo,非常实用适合小白上手,话多说上项目。
项目
1. 打开Visual Studio 2017,新建一个Winform项目,命名为 MissionBoardData。
2. 打开新建项目的文件夹中,新建一个Image的文件夹,在里面加入一个Icon的图标,找张图片直接百度在线Icon即可。
3. 打开Form1.Designer.cs文件将我们的Title更换成我们的项目名称MissionBoardData,默认的Form1名称就被我们更换了。
4. 然后在我们左侧的工具箱中拖入两个控件,分别为 NotifyIcon 控件和 ContextMenuStrip控件
NotifyIcon控件的作用是将我们的图标放置在托盘中。命名为 :NotIcon
ContextMenuStrip控件是我们在托盘中可以对程序进行相应点击功能。命名为 :NotMenuStrip
4.1 点击NotIcon,在窗口属性的外观中找到Icon选项选择我们刚才放入文件的Icon图标,在ContextMenuStrip中选择我们新建的NotMenuStrip,在Text中输入NotMenuStrip(也可以自行输入,这是系统托盘中显示的的名称)。
4.2 点击NotMenuStrip,这时我们的主窗口中会显示这个插件,在请在此处键入中进行鼠标双击,分别键入显示;隐藏;退出
5. 现在可以直接点击运行,查看效果,就会发现在我们的系统托盘中已经有了我们的程序图标,并且鼠标右键也会呈现我们刚才在NotMenuStrip键入的显示;隐藏和退出,接下来我们给它们写入命令。
6. 但是我们发现主程序的左上角还是默认的图标,点击一下主程序窗口,然后在布局中找到Icon进行替换即可。
7. 点击NotMenuStrip,双击我们刚才键入的显示,会跳到他的Click事件中,依次将隐藏和退出也做如下操作。
8. 显示
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Normal;//正常显示
}
9. 隐藏
private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;//没了
}
10. 退出
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
//全干死
this.Dispose();
this.Close();
}
11.然后我们再运行程序发现我们在系统托盘中的图标和它的三个功能就好使了,但是我们发现他每次都是在桌面不同地方呈现,所以我们给它加一个固定居中现在,将他加到主函数中和显示函数中即可。
this.StartPosition = FormStartPosition.CenterScreen;//居中显示
这样呢一个实用方便的小操作到这里就结束了,但是对于控制台程序和WPF的程序操作上还是比较麻烦的需要引用自带的程序集和user32.dll文件才可以,但是呢会出现进程优先的问题,可以通过后台线程的方式进行使用,大家可以自己尝试一下。
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;
namespace MissionBoardData
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
this.StartPosition = FormStartPosition.CenterScreen;//默认居中显示
}
private void 显示ToolStripMenuItem_Click(object sender, EventArgs e)
{
this.StartPosition = FormStartPosition.CenterScreen;//居中显示
WindowState = FormWindowState.Normal;//正常显示
}
private void 隐藏ToolStripMenuItem_Click(object sender, EventArgs e)
{
WindowState = FormWindowState.Minimized;//没了
}
private void 关闭ToolStripMenuItem_Click(object sender, EventArgs e)
{
//全干死
this.Dispose();
this.Close();
}
}
}