【愚公系列】2023年11月 Winform控件专题 StatusStrip控件详解
🏆 作者简介,愚公搬代码
🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,CSDN博客专家,阿里云专家博主,腾讯云优秀博主,掘金优秀博主,51CTO博客专家等。
🏆《近期荣誉》:2022年CSDN博客之星TOP2,2022年华为云十佳博主等。
🏆《博客内容》:.NET、Java、Python、Go、Node、前端、IOS、Android、鸿蒙、Linux、物联网、网络安全、大数据、人工智能、U3D游戏、小程序等相关领域知识。
🏆🎉欢迎 👍点赞✍评论⭐收藏
🚀前言
Winform控件是Windows Forms中的用户界面元素,它们可以用于创建Windows应用程序的各种视觉和交互组件,例如按钮、标签、文本框、下拉列表框、复选框、单选框、进度条等。开发人员可以使用Winform控件来构建用户界面并响应用户的操作行为,从而创建功能强大的桌面应用程序。
🚀一、StatusStrip控件详解
StatusStrip控件是用于在Winform应用程序底部显示状态信息的控件。它通常包含一些标签(Label)和进度条(ProgressBar),以便用户可以了解应用程序当前正在执行的操作和状态。
以下是一些常见的用法:
- 显示文本信息
在StatusStrip控件上添加一个Label控件,并设置其Text属性即可显示相应的文本信息。
statusStrip1.Items.Add("Ready");
- 显示进度条
在StatusStrip控件上添加一个ProgressBar控件,并设置其Value属性即可更新进度条的进度。
toolStripProgressBar1.Value = 50;
- 显示时间和日期
在StatusStrip控件上添加一个ToolStripStatusLabel控件,并设置其Text属性为当前时间和日期即可显示时间和日期信息。
toolStripStatusLabel1.Text = DateTime.Now.ToString();
- 显示链接
在StatusStrip控件上添加一个LinkLabel控件,并设置其Text属性即可显示链接。
toolStripStatusLabel2.Text = "http://www.example.com";
toolStripStatusLabel2.IsLink = true;
当用户单击链接时,会触发LinkClicked事件,可以在此事件中打开相应的网页。
private void toolStripStatusLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
Process.Start(toolStripStatusLabel2.Text);
}
🔎1.属性介绍
🦋1.1 AllowDrop、AllowItemReorder、AllowMerge
- AllowDrop属性
AllowDrop属性用于指定StatusStrip控件是否可以接受拖放操作。当设置为true时,控件可以接受拖放操作。否则,控件会忽略所有的拖放操作。
示例代码:
statusStrip1.AllowDrop = true;
private void statusStrip1_DragEnter(object sender, DragEventArgs e)
{
e.Effect = DragDropEffects.All;
}
private void statusStrip1_DragDrop(object sender, DragEventArgs e)
{
// 处理拖放操作
}
在上述代码中,首先将AllowDrop属性设置为true,然后在DragEnter事件中设置拖放效果,最后在DragDrop事件中处理拖放操作。
- AllowItemReorder属性
AllowItemReorder属性用于指定StatusStrip控件中的项是否可以重新排序。当设置为true时,用户可以通过拖动项来重新排序。否则,用户不能重新排序项。
示例代码:
statusStrip1.AllowItemReorder = true;
在上述代码中,将AllowItemReorder属性设置为true,表示用户可以通过拖动项来重新排序。
- AllowMerge属性
AllowMerge属性用于指定StatusStrip控件是否可以与其他StatusStrip控件合并。当设置为true时,控件可以与其他控件合并。否则,控件不能与其他控件合并。
示例代码:
statusStrip1.AllowMerge = true;
将AllowMerge属性设置为true,表示控件可以与其他控件合并。合并操作可以通过StatusStrip控件的MergeAction和MergeIndex属性进行控制。
🦋1.2 ImageScalingSize
ImageScalingSize属性用于设置状态栏中图标的大小。当该属性值为Empty时,控件使用原始图像大小。当该属性值不为Empty时,控件会按照指定大小缩放图像。以下是使用ImageScalingSize属性的示例代码:
statusStrip1.ImageScalingSize = new Size(32, 32); //设置状态栏图标大小为32*32
//创建状态栏按钮
ToolStripButton btn1 = new ToolStripButton("Button1", image1, onClick);
ToolStripButton btn2 = new ToolStripButton("Button2", image2, onClick);
//将按钮添加到状态栏
statusStrip1.Items.Add(btn1);
statusStrip1.Items.Add(btn2);
在上面的示例中,我们创建了两个状态栏按钮,并将它们添加到状态栏中。其中,image1与image2是两张32*32的图片。由于设置了ImageScalingSize属性,控件会按照指定大小缩放图像。因此,无论原始图像的大小如何,最终展示在状态栏中的图像都是指定大小的。
🦋1.3 Items
Items属性是用于向StatusStrip中添加状态信息项的属性。
使用方法如下:
-
在设计窗口中选择StatusStrip控件,并右键单击,在弹出的上下文菜单中选择“属性”。
-
在属性窗口中找到Items属性,并单击“…”按钮。
-
在Items Collection Editor窗口中,选择“Add”按钮,向StatusStrip中添加一个状态信息项。
-
在添加的状态信息项的属性中设置Text、ToolTipText和Image等属性值。
-
重复步骤3和4,添加更多的状态信息项。
-
单击Items Collection Editor窗口的“确定”按钮,完成Items属性的设置。
示例代码如下:
// 创建一个StatusStrip控件
StatusStrip statusStrip = new StatusStrip();
// 设置状态栏样式
statusStrip.BackColor = Color.LightGray;
statusStrip.Dock = DockStyle.Bottom;
// 添加状态信息项
ToolStripStatusLabel item1 = new ToolStripStatusLabel("状态信息1");
ToolStripStatusLabel item2 = new ToolStripStatusLabel("状态信息2");
ToolStripStatusLabel item3 = new ToolStripStatusLabel("状态信息3");
statusStrip.Items.AddRange(new ToolStripItem[] { item1, item2, item3 });
// 将StatusStrip控件加入到窗口中
this.Controls.Add(statusStrip);
🦋1.4 LayoutStyle
StatusStrip控件是Windows Forms中的一个工具栏控件,它通常位于窗口底部,用于显示程序状态信息、操作提示等内容。其中LayoutStyle属性用于设置工具栏中各控件的排列方式,可选值包括以下三种:
-
Horizontal:水平排列。默认值为水平排列方式,即在一个水平方向上排列各个子控件。当工具栏宽度不足以容纳所有控件时,会自动将部分控件隐藏在菜单中。
-
Vertical:垂直排列。将工具栏内的各子控件按照垂直方向排列,可使用工具栏显示所有控件,但是占用的窗口空间较大。
-
Table:表格排列。将工具栏内的控件按照表格方式进行排列,可以通过设置每个单元格的大小和位置来自定义布局,不过需要手动调整排列位置和大小,较为繁琐。
🦋1.5 RenderMode
StatusStrip控件的RenderMode属性用于指定它的外观渲染模式,有两个可选值:
-
System - 使用默认系统样式渲染控件
-
Professional - 使用专业外观样式渲染控件
使用方法如下:
-
在Visual Studio中打开Windows Form应用程序
-
将StatusStrip控件拖放到窗体中
-
选择StatusStrip控件,在属性窗口中找到RenderMode属性
-
将RenderMode属性设置为System或Professional
-
运行应用程序,查看控件的外观
示例代码:
private void Form1_Load(object sender, EventArgs e)
{
//将StatusStrip控件的RenderMode属性设置为Professional
statusStrip1.RenderMode = ToolStripRenderMode.Professional;
}
注意:在使用Professional模式时,根据操作系统的不同,控件的外观可能会有所不同。在某些操作系统上,Professional模式可能与System模式相同。
🦋1.6 ShowItemToolTips
ShowItemToolTips属性是StatusStrip控件的一个布尔类型属性,如果设置为True,则当鼠标悬停在StatusStrip控件中某个子控件上时,会显示该子控件的ToolTip提示信息。如果设置为False,则不会显示ToolTip提示信息。
下面是一个示例代码,演示如何在Winform中使用StatusStrip控件的ShowItemToolTips属性:
private void Form1_Load(object sender, EventArgs e)
{
statusStrip1.ShowItemToolTips = true; // 设置ShowItemToolTips属性为True
// 添加一个Label控件到StatusStrip控件上,并设置ToolTip提示信息
ToolStripStatusLabel label = new ToolStripStatusLabel();
label.Text = "这是一个Label控件";
label.ToolTipText = "这是Label控件的ToolTip提示信息";
statusStrip1.Items.Add(label);
// 添加一个ProgressBar控件到StatusStrip控件上,并设置ToolTip提示信息
ToolStripProgressBar progressBar = new ToolStripProgressBar();
progressBar.ToolTipText = "这是ProgressBar控件的ToolTip提示信息";
statusStrip1.Items.Add(progressBar);
}
在上述示例中,首先将ShowItemToolTips属性设置为True,然后向StatusStrip控件添加了一个Label控件和一个ProgressBar控件,并为它们分别设置了ToolTip提示信息。这样,当鼠标悬停在这两个子控件上时,就会显示它们的ToolTip提示信息。
🔎2.常用场景
StatusStrip控件通常用于显示程序的状态信息,如进度条、消息提示、时间、版本号等等。常见的场景包括:
-
显示程序的状态:例如程序正在加载、保存或执行某个操作时,可以通过StatusStrip控件显示进度条或文字提示。
-
显示当前的时间:可以在StatusStrip控件中添加一个Label控件,用于显示当前的系统时间。
-
显示程序的版本号:可以在StatusStrip控件中添加一个Label控件,用于显示程序的版本信息。
-
显示提示信息:例如在程序中添加一个ToolTip控件,可以在StatusStrip控件中显示提示文字,帮助用户更好地理解程序的功能。
-
显示状态栏菜单:可以在StatusStrip控件中添加一个MenuStrip控件,用于显示程序的菜单栏,方便用户进行操作。
🔎3.具体案例
下面是一个StatusStrip控件的完整案例:
using System;
using System.Windows.Forms;
namespace StatusStripExample
{
public partial class Form1: Form
{
public Form1()
{
InitializeComponent();
}
ToolStripStatusLabel toolStripStatusLabel1 = new ToolStripStatusLabel();
private void Form1_Load(object sender, EventArgs e)
{
// 设置StatusStrip控件的RenderMode属性为Professional,使其显示更好看的外观
statusStrip1.RenderMode = ToolStripRenderMode.Professional;
// 添加一个Label控件,用于显示当前的系统时间
ToolStripLabel timeLabel = new ToolStripLabel();
statusStrip1.Items.Add(timeLabel);
// 添加一个进度条,用于显示程序加载的进度
ToolStripProgressBar progressBar = new ToolStripProgressBar();
progressBar.Maximum = 100;
progressBar.Minimum = 0;
progressBar.Step = 1;
statusStrip1.Items.Add(progressBar);
statusStrip1.Items.Add(toolStripStatusLabel1);
// 添加一个ToolTip控件,用于显示提示信息
ToolTip toolTip = new ToolTip();
toolTip.SetToolTip(statusStrip1, "这是一个状态栏示例");
// 设置StatusStrip控件的ShowItemToolTips属性为true,使其显示项的提示信息
statusStrip1.ShowItemToolTips = true;
// 启动一个计时器,用于刷新时间Label的内容
Timer timer = new Timer();
timer.Interval = 1000;
timer.Tick += Timer_Tick;
timer.Start();
// 模拟程序加载过程
for (int i = 0; i <= 100; i++)
{
progressBar.Value = i;
Application.DoEvents();
System.Threading.Thread.Sleep(20);
}
// 加载完成后隐藏进度条
progressBar.Visible = false;
}
private void Timer_Tick(object sender, EventArgs e)
{
// 更新时间Label的内容
toolStripStatusLabel1.Text = DateTime.Now.ToString();
}
}
}
该示例程序中,我们在Form1窗体的Load事件中添加了一个状态栏(StatusStrip)控件,并在其中添加了一个显示时间的Label控件、一个进度条(ProgressBar)和一个ToolTip控件。在程序启动时,模拟了一个加载的过程,并在进度条中显示进度,加载完成后隐藏进度条。同时,启动了一个定时器,在每隔1秒钟时更新时间Label的内容。最后,我们还设置了ShowItemToolTips属性为true,使得当鼠标悬停在状态栏上时,会显示提示信息。
🚀感谢:给读者的一封信
亲爱的读者,
我在这篇文章中投入了大量的心血和时间,希望为您提供有价值的内容。这篇文章包含了深入的研究和个人经验,我相信这些信息对您非常有帮助。
如果您觉得这篇文章对您有所帮助,我诚恳地请求您考虑赞赏1元钱的支持。这个金额不会对您的财务状况造成负担,但它会对我继续创作高质量的内容产生积极的影响。
我之所以写这篇文章,是因为我热爱分享有用的知识和见解。您的支持将帮助我继续这个使命,也鼓励我花更多的时间和精力创作更多有价值的内容。
如果您愿意支持我的创作,请扫描下面二维码,您的支持将不胜感激。同时,如果您有任何反馈或建议,也欢迎与我分享。
![在这里插入图片描述](https://img-blog.csdnimg.cn/e06a317e89694a23ad89d2c59538c3a1.jpeg#pic_center =450x300)
再次感谢您的阅读和支持!
最诚挚的问候, “愚公搬代码”
- 点赞
- 收藏
- 关注作者
评论(0)