一、ToolStrip 工具栏控件
1. 控件作用
ToolStrip 是 WinForm 顶部工具栏控件,用于存放按钮、文本、下拉框等快捷操作项,普遍用于软件顶部菜单栏下方快捷功能栏。
2. 核心子项对象
-
ToolStripButton:工具栏按钮(可图文展示)
-
ToolStripLabel:工具栏文本标签(纯文字展示)
3. 核心属性
-
Text:设置按钮/标签显示文字
-
Image:设置工具栏项展示图片
-
Items:工具栏所有子项集合,用于添加控件
4. 完整实战代码(动态创建工具栏项)
cs
namespace _04toolstrip
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
// 1. 动态创建工具栏按钮
ToolStripButton btn = new ToolStripButton("安全");
// 绑定本地图片
btn.Image = Image.FromFile("C:\\Users\\Administrator\\Desktop\\img\\22.jpg");
// 将按钮添加到工具栏
toolStrip1.Items.Add(btn);
// 2. 动态创建工具栏文本标签
ToolStripLabel label = new ToolStripLabel("防范");
toolStrip1.Items.Add(label);
}
}
}
5. 核心考点
-
所有工具栏子项,统一通过
toolStrip1.Items.Add()挂载展示 -
ToolStripButton 支持图文混排,ToolStripLabel 仅展示纯文本
-
图片加载需保证路径正确,否则会报文件不存在异常
二、StatusStrip 状态栏控件
1. 控件作用
StatusStrip 是 WinForm 窗体底部状态栏,用于展示系统状态、时间、进度、提示文本,固定在窗体最底部。
2. 核心子项
ToolStripStatusLabel:状态栏文本标签,用于展示动态文字信息
3. 核心搭配组件
常配合 Timer 定时器 实现动态刷新(如实时时间、实时状态)
4. 完整实战代码(底部实时时间)
cs
namespace _05StatusStrip
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 配合定时器实时刷新底部状态栏时间
private void timer1_Tick(object sender, EventArgs e)
{
// 给状态栏标签赋值为当前系统时间
toolStripStatusLabel1.Text = DateTime.Now.ToString();
}
}
}
5. 核心考点
-
状态栏文本修改:修改
ToolStripStatusLabel.Text属性 -
必须依赖定时器持续刷新,才能实现时间动态走动
-
控件默认停靠在窗体底部,无需手动设置位置
三、NotifyIcon 系统托盘图标控件(重难点)
1. 控件作用
NotifyIcon 实现系统托盘功能,可以将程序最小化/关闭时隐藏到电脑右下角托盘,支持气泡弹窗提示、右键菜单,是桌面软件常用功能。
2. 核心属性
-
Visible:托盘图标是否显示(true显示,false隐藏)
-
BalloonTipTitle:气泡提示标题
-
BalloonTipText:气泡提示内容
-
BalloonTipIcon:气泡提示图标(Error/Info/Warning/None)
3. 核心方法
- ShowBalloonTip(int 毫秒):弹出气泡通知,参数为展示时长
4. 核心事件与逻辑
(1)窗体最小化事件 SizeChanged
窗体最小化时,隐藏窗体、弹出托盘提示
(2)窗体关闭事件 FormClosing
拦截关闭操作,实现「假关闭」,程序后台驻留托盘,不退出进程
关键代码 :e.Cancel = true; 取消本次关闭事件
(3)菜单退出事件
Application.Exit(); 真正退出整个应用程序
5. 完整实战代码(假关闭+托盘提示)
cs
namespace _06Notifylon
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
// 菜单退出:真正关闭程序
private void 退出ToolStripMenuItem_Click(object sender, EventArgs e)
{
Application.Exit();
}
// 窗体最小化:隐藏窗体,弹出托盘提示
private void Form1_SizeChanged(object sender, EventArgs e)
{
// 判断窗体状态为最小化
if (this.WindowState == FormWindowState.Minimized)
{
this.Hide(); // 隐藏窗体
// 配置托盘气泡信息
notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
notifyIcon1.BalloonTipText = "假关闭";
notifyIcon1.BalloonTipTitle = "提示";
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(5000); // 展示5秒气泡
}
}
// 点击窗体关闭按钮:拦截关闭,实现假关闭
private void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
this.Hide(); // 隐藏窗体
// 配置托盘气泡提示
notifyIcon1.BalloonTipIcon = ToolTipIcon.Error;
notifyIcon1.BalloonTipText = "假关闭";
notifyIcon1.BalloonTipTitle = "提示";
notifyIcon1.Visible = true;
notifyIcon1.ShowBalloonTip(5000);
e.Cancel = true; // 【核心】取消关闭事件,程序不退出
}
}
}
四、三大控件核心易错点(必考)
-
ToolStrip:所有子控件必须添加到 Items 集合才会显示
-
StatusStrip:静态文本不会自动更新,必须配合定时器动态赋值
-
NotifyIcon 假关闭核心 :不加
e.Cancel=true会直接关闭程序,无法驻留托盘 -
程序真正退出 :必须使用
Application.Exit(),Hide() 只是隐藏窗体,进程仍在运行 -
托盘气泡提示必须开启 Visible=true,否则图标不显示、弹窗不生效
五、三大控件背诵口诀
工具栏ToolStrip,按钮标签加Items;
状态栏底刷时间,Timer定时改文本;
托盘图标Notify,最小隐藏假关闭;
Cancel拦截关闭,Exit才是真退