前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解

【愚公系列】2023年12月 Winform控件专题 StatusStrip控件详解

原创
作者头像
愚公搬代码
修改2023-12-28 08:10:12
2970
修改2023-12-28 08:10:12
举报
文章被收录于专栏:历史专栏历史专栏

🏆 作者简介,愚公搬代码 🏆《头衔》:华为云特约编辑,华为云云享专家,华为开发者专家,华为产品云测专家,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),以便用户可以了解应用程序当前正在执行的操作和状态。

以下是一些常见的用法:

  1. 显示文本信息

在StatusStrip控件上添加一个Label控件,并设置其Text属性即可显示相应的文本信息。

代码语言:csharp
复制
statusStrip1.Items.Add("Ready");
  1. 显示进度条

在StatusStrip控件上添加一个ProgressBar控件,并设置其Value属性即可更新进度条的进度。

代码语言:csharp
复制
toolStripProgressBar1.Value = 50;
  1. 显示时间和日期

在StatusStrip控件上添加一个ToolStripStatusLabel控件,并设置其Text属性为当前时间和日期即可显示时间和日期信息。

代码语言:csharp
复制
toolStripStatusLabel1.Text = DateTime.Now.ToString();
  1. 显示链接

在StatusStrip控件上添加一个LinkLabel控件,并设置其Text属性即可显示链接。

代码语言:csharp
复制
toolStripStatusLabel2.Text = "http://www.example.com";
toolStripStatusLabel2.IsLink = true;

当用户单击链接时,会触发LinkClicked事件,可以在此事件中打开相应的网页。

代码语言:csharp
复制
private void toolStripStatusLabel2_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
{
    Process.Start(toolStripStatusLabel2.Text);
}

🔎1.属性介绍

🦋1.1 AllowDrop、AllowItemReorder、AllowMerge

  1. AllowDrop属性

AllowDrop属性用于指定StatusStrip控件是否可以接受拖放操作。当设置为true时,控件可以接受拖放操作。否则,控件会忽略所有的拖放操作。

示例代码:

代码语言:csharp
复制
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事件中处理拖放操作。

  1. AllowItemReorder属性

AllowItemReorder属性用于指定StatusStrip控件中的项是否可以重新排序。当设置为true时,用户可以通过拖动项来重新排序。否则,用户不能重新排序项。

示例代码:

代码语言:csharp
复制
statusStrip1.AllowItemReorder = true;

在上述代码中,将AllowItemReorder属性设置为true,表示用户可以通过拖动项来重新排序。

  1. AllowMerge属性

AllowMerge属性用于指定StatusStrip控件是否可以与其他StatusStrip控件合并。当设置为true时,控件可以与其他控件合并。否则,控件不能与其他控件合并。

示例代码:

代码语言:csharp
复制
statusStrip1.AllowMerge = true;

将AllowMerge属性设置为true,表示控件可以与其他控件合并。合并操作可以通过StatusStrip控件的MergeAction和MergeIndex属性进行控制。

🦋1.2 ImageScalingSize

ImageScalingSize属性用于设置状态栏中图标的大小。当该属性值为Empty时,控件使用原始图像大小。当该属性值不为Empty时,控件会按照指定大小缩放图像。以下是使用ImageScalingSize属性的示例代码:

代码语言:csharp
复制
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中添加状态信息项的属性。

使用方法如下:

  1. 在设计窗口中选择StatusStrip控件,并右键单击,在弹出的上下文菜单中选择“属性”。
  2. 在属性窗口中找到Items属性,并单击“…”按钮。
  3. 在Items Collection Editor窗口中,选择“Add”按钮,向StatusStrip中添加一个状态信息项。
  4. 在添加的状态信息项的属性中设置Text、ToolTipText和Image等属性值。
  5. 重复步骤3和4,添加更多的状态信息项。
  6. 单击Items Collection Editor窗口的“确定”按钮,完成Items属性的设置。

示例代码如下:

代码语言:csharp
复制
// 创建一个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属性用于设置工具栏中各控件的排列方式,可选值包括以下三种:

  1. Horizontal:水平排列。默认值为水平排列方式,即在一个水平方向上排列各个子控件。当工具栏宽度不足以容纳所有控件时,会自动将部分控件隐藏在菜单中。
  2. Vertical:垂直排列。将工具栏内的各子控件按照垂直方向排列,可使用工具栏显示所有控件,但是占用的窗口空间较大。
  3. Table:表格排列。将工具栏内的控件按照表格方式进行排列,可以通过设置每个单元格的大小和位置来自定义布局,不过需要手动调整排列位置和大小,较为繁琐。

🦋1.5 RenderMode

StatusStrip控件的RenderMode属性用于指定它的外观渲染模式,有两个可选值:

  1. System - 使用默认系统样式渲染控件
  2. Professional - 使用专业外观样式渲染控件

使用方法如下:

  1. 在Visual Studio中打开Windows Form应用程序
  2. 将StatusStrip控件拖放到窗体中
  3. 选择StatusStrip控件,在属性窗口中找到RenderMode属性
  4. 将RenderMode属性设置为System或Professional
  5. 运行应用程序,查看控件的外观

示例代码:

代码语言:csharp
复制
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属性:

代码语言:csharp
复制
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控件通常用于显示程序的状态信息,如进度条、消息提示、时间、版本号等等。常见的场景包括:

  1. 显示程序的状态:例如程序正在加载、保存或执行某个操作时,可以通过StatusStrip控件显示进度条或文字提示。
  2. 显示当前的时间:可以在StatusStrip控件中添加一个Label控件,用于显示当前的系统时间。
  3. 显示程序的版本号:可以在StatusStrip控件中添加一个Label控件,用于显示程序的版本信息。
  4. 显示提示信息:例如在程序中添加一个ToolTip控件,可以在StatusStrip控件中显示提示文字,帮助用户更好地理解程序的功能。
  5. 显示状态栏菜单:可以在StatusStrip控件中添加一个MenuStrip控件,用于显示程序的菜单栏,方便用户进行操作。

🔎3.具体案例

下面是一个StatusStrip控件的完整案例:

代码语言:csharp
复制
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,使得当鼠标悬停在状态栏上时,会显示提示信息。

我正在参与2023腾讯技术创作特训营第四期有奖征文,快来和我瓜分大奖!

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 🚀前言
  • 🚀一、StatusStrip控件详解
    • 🔎1.属性介绍
      • 🦋1.1 AllowDrop、AllowItemReorder、AllowMerge
      • 🦋1.2 ImageScalingSize
      • 🦋1.3 Items
      • 🦋1.4 LayoutStyle
      • 🦋1.5 RenderMode
      • 🦋1.6 ShowItemToolTips
    • 🔎2.常用场景
      • 🔎3.具体案例
      相关产品与服务
      云开发 CloudBase
      云开发(Tencent CloudBase,TCB)是腾讯云提供的云原生一体化开发环境和工具平台,为200万+企业和开发者提供高可用、自动弹性扩缩的后端云服务,可用于云端一体化开发多种端应用(小程序、公众号、Web 应用等),避免了应用开发过程中繁琐的服务器搭建及运维,开发者可以专注于业务逻辑的实现,开发门槛更低,效率更高。
      领券
      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档