目录
【效果】
【准备图标ico】
网上找一个好看的图片,然后线上制作一下ico
【添加notifyIcon控件】
给控件添加自己制作好的ico
【最小化设置】
重写方法后,会在方法里判断点击了最小化按钮
如果点击了最小化按钮,则关闭窗体在底部显示,同时设置图标在最小化任务栏里面
【鼠标点击还原窗体显示】
设置如下点击事件
【完整代码代码】
- 重写WndProc函数方法
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 WindowsFormsApp
{
public partial class myForm : Form
{
public myForm()
{
InitializeComponent();
}
#region 重写方法
const int WM_SYSCOMMAND = 0x112;
const int SC_CLOSE = 0xF060;
const int SC_MINIMIZE = 0xF020;
const int SC_MAXIMIZE = 0xF030;
const int SC_RESTORE = 61728;
//窗体按钮的拦截函数
protected override void WndProc(ref Message m)
{
if (m.Msg == WM_SYSCOMMAND)
{
if (m.WParam.ToInt32() == SC_RESTORE)
{
MessageBox.Show("窗口还原!");
}
if (m.WParam.ToInt32() == SC_MINIMIZE) //拦截最小化按钮
{
this.ShowInTaskbar = false;
this.notifyIcon.Icon = this.Icon;
this.Hide();
MessageBox.Show("点击最小化按钮!");
}
if (m.WParam.ToInt32() == SC_MAXIMIZE) //拦截窗体最大化按钮
{
MessageBox.Show("点击最大化按钮!");
}
if (m.WParam.ToInt32() == SC_CLOSE) //拦截窗体关闭按钮
{
this.notifyIcon.Icon = null; //清空在任务栏里的图标。否则窗体关闭了,任务栏还是有图标。当然,鼠标移动上去就会自动消失,显然这样不好看
MessageBox.Show("点击窗口关闭按钮!");
}
}
base.WndProc(ref m);
}
#endregion
private void notifyIcon_MouseClick(object sender, MouseEventArgs e)
{
this.Visible = true;
this.WindowState = FormWindowState.Normal;
}
}
}
更多基础知识讨论,可扫一扫关注