当前位置: 首页 > news >正文

【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件

文章目录

    • 1.MenuStrip
    • 2.ContextMenuStrip
    • 3.ToolStrip
    • 4.StatusStrip

1.MenuStrip

MenuStrip作为一个容器可以包含多个菜单项。MenuStrip 的重要属性包括:

  • Name:菜单的名字
  • Dock:菜单的停靠位置
  • Items:菜单项的集合

ToolStripMenuItem

ToolStripMenuItemMenuStrip 中的菜单项,可以有以下属性和功能:

  • ShortcutKeys:为菜单项设置快捷键,例如 Alt+FCtrl+N
  • DropDownItems:菜单项的子菜单集合
  • 图标:菜单项可以通过关联 ImageList 控件来显示图标

菜单项的响应

菜单项可以注册 Click 事件来响应用户的点击操作。有两种方式来添加菜单项的响应:

  1. 手动添加:在设计界面上手动添加菜单项,并为每个菜单项注册 Click 事件
  2. 代码添加:在 Load 事件中通过代码添加菜单项,并为其注册 Click 事件

代码示例

using System;
using System.Windows.Forms;namespace WFFormUse
{public partial class FrmMenuStrip : Form{public FrmMenuStrip(){InitializeComponent();}private void FrmMenuStrip_Load(object sender, EventArgs e){//代码添加菜单项ToolStripMenuItem miStudent = new ToolStripMenuItem();miStudent.Name = "miStudent";miStudent.Text = "学生管理(&M)";//它下面还有子菜单 ToolStripMenuItem miAddStudent = new ToolStripMenuItem();miAddStudent.Name = "miAddStudent";miAddStudent.Text = "新增学生";miAddStudent.Click += MiAddStudent_Click;miStudent.DropDownItems.Add(miAddStudent);//添加子菜单StudentMenus.Items.Add(miStudent); //添加主菜单}private void MiAddStudent_Click(object sender, EventArgs e){MForms.FrmAddStudent fAddStudent = new MForms.FrmAddStudent();fAddStudent.MdiParent = this;//设置当前窗体的父窗体fAddStudent.Show();//Mdi容器不支持ShowDialog()}//退出系统private void miExit_Click(object sender, EventArgs e){Application.Exit();}//新增学生private void miAddStudent_Click(object sender, EventArgs e){MForms.FrmAddStudent fAddStudent = new MForms.FrmAddStudent();fAddStudent.MdiParent = this;//设置当前窗体的父窗体fAddStudent.Show();//Mdi容器不支持ShowDialog()}//新增班级private void miAddClass_Click(object sender, EventArgs e){MForms.FrmAddClass fAddClass = new MForms.FrmAddClass();fAddClass.MdiParent = this;fAddClass.Show();}private void StudentMenus_ItemClicked(object sender, ToolStripItemClickedEventArgs e){}}
}

请添加图片描述

2.ContextMenuStrip

ContextMenuStrip用于创建和显示上下文菜单,也就是通常所说的右键菜单。它通常与窗体或其他控件相关联,当用户在相关联的控件上右击时,上下文菜单就会显示出来。

属性

ContextMenuStrip 的一些重要属性包括:

  • Items:菜单项的集合,用于存放菜单项。
  • Name:菜单的名字。

除了这些,ContextMenuStrip 还有其他一些属性,例如 BackColorForeColorFont 等,用于设置菜单的背景色、前景色、字体等。

方法

  • Show:显示上下文菜单。该方法有多个重载版本,可以指定显示位置等参数。
  • Hide:隐藏上下文菜单。
  • Dispose:释放 ContextMenuStrip 控件所使用的资源。

官方文档:https://learn.microsoft.com/zh-cn/dotnet/api/system.windows.forms.contextmenustrip?view=windowsdesktop-7.0&viewFallbackFrom=net-7.0

示例:

namespace WinFormsTest
{public partial class frmContextMenuStrip : Form{public frmContextMenuStrip(){InitializeComponent();}private void ContextMenuStrip_Load(object sender, EventArgs e){}private void loginToolStripMenuItem_Click(object sender, EventArgs e){FrmUser fAddStudent = new FrmUser();fAddStudent.MdiParent = this;//设置当前窗体的父窗体fAddStudent.Show();//Mdi容器不支持ShowDialog()}private void redToolStripMenuItem_Click(object sender, EventArgs e){button2.BackColor = Color.Red;}private void greenToolStripMenuItem_Click(object sender, EventArgs e){button2.BackColor = Color.Green;}private void 改字体颜色ToolStripMenuItem_Click(object sender, EventArgs e){button1.BackColor = Color.Green;}}
}

请添加图片描述

3.ToolStrip

ToolStrip 通常用于创建工具栏,以便用户能够快速访问常用的命令或功能。ToolStrip 可以包含多个不同类型的项,例如按钮、标签、下拉按钮等。

属性

ToolStrip 的重要属性包括:

  • Items:项的集合,用于存放 ToolStrip 中的各种项。
  • DisplayStyle:用于设置项中图片和文本的显示方式。

ToolStrip 中的项

ToolStrip 中可以包含以下类型的项:

  • ToolStripButton:按钮,可以注册 Click 事件来响应用户的点击操作。
  • ToolStripLabel:标签,也可以注册 Click 事件。
  • ToolStripSplitButton:拆分按钮,包含一个按钮部分和一个下拉部分,可以注册 ButtonClick 事件来响应按钮部分的点击操作,也可以注册 Click 事件来响应下拉项的点击操作。
  • ToolStripDropDownButton:下拉按钮,可以包含多个下拉项,可以注册 DropDownItemClicked 事件来响应下拉项的点击操作。
  • ToolStripComboBox:下拉组合框,可以注册 SelectedIndexChanged 事件来响应选中项的改变。
  • ToolStripTextBox:文本输入框,可以注册 TextChanged 事件来响应文本的改变。
  • ToolStripProgressBar:进度条,通常不需要注册事件。

示例

请添加图片描述

4.StatusStrip

StatusStrip控件是通常用于在窗口的底部显示状态信息、进度条等。

常用属性:

  • Dock: 控制StatusStrip的停靠位置,默认值为Bottom,即停靠在窗口的底部。
  • Items: 表示StatusStrip中包含的所有子控件的集合。

用途:

  • 显示账号信息。
  • 显示角色信息。
  • 显示操作位置信息。
  • 显示进度条。
  • 显示版本信息。

示例:

namespace WinFormsTest
{public partial class frmStatusStrip : Form{public frmStatusStrip(){InitializeComponent();}private void frmStatusStrip_Load(object sender, EventArgs e){// 创建StatusStrip控件StatusStrip statusStrip = new StatusStrip();statusStrip.Dock = DockStyle.Bottom;// 添加账号信息ToolStripStatusLabel accountLabel = new ToolStripStatusLabel();accountLabel.Text = "账号: user1";statusStrip.Items.Add(accountLabel);// 添加角色信息ToolStripStatusLabel roleLabel = new ToolStripStatusLabel();roleLabel.Text = "角色: 管理员";statusStrip.Items.Add(roleLabel);// 添加操作位置信息ToolStripStatusLabel locationLabel = new ToolStripStatusLabel();locationLabel.Text = "操作位置: 主界面";statusStrip.Items.Add(locationLabel);// 添加进度条ToolStripProgressBar progressBar = new ToolStripProgressBar();progressBar.Value = 50;statusStrip.Items.Add(progressBar);// 添加版本信息ToolStripStatusLabel versionLabel = new ToolStripStatusLabel();versionLabel.Text = "版本: v1.0";statusStrip.Items.Add(versionLabel);// 将StatusStrip控件添加到窗口的Controls集合中this.Controls.Add(statusStrip);}}
}

请添加图片描述
精彩推荐:
【C#进阶一】C#中的数组(Array)、集合(ArrayList,Queue,Stack, HashList)、List<T>、字典(Dictionary<K,T>)和双向链表LinkedList
【C#进阶八】C#中的序列化与反序列化下(二进制序列化、XML序列化及JSON序列化)

【C#进阶】C#语法中一些常用知识点总结
【WinForm详细教程一】WinForm中的窗体、Label、TextBox及Button控件、RadioButton和CheckBox、ListBox
【WinForm详细教程三】WinForm中的NumericUpDown、PictureBox、RichTextBox及三种Timer控件
【WinForm详细教程四】WinForm中的ProgressBar 、ImageList和ListView控件

【C#进阶】C#中的委托、事件、回调函数、匿名函数和lambda表达式
希望有所帮助,同时欢迎关注我,后面将更新更多相关内容!

相关文章:

【WinForm详细教程五】WinForm中的MenuStrip 、ContextMenuStrip 、ToolStrip、StatusStrip控件

文章目录 1.MenuStrip2.ContextMenuStrip3.ToolStrip4.StatusStrip 1.MenuStrip MenuStrip作为一个容器可以包含多个菜单项。MenuStrip 的重要属性包括: Name:菜单的名字Dock:菜单的停靠位置Items:菜单项的集合 ToolStripMenuI…...

研究人员发现34个Windows驱动程序易受完全设备接管攻击

最近,研究人员发现了34个易受攻击的Windows驱动程序,这些漏洞可能被非特权威胁行为者利用来完全接管设备,并在底层系统上执行任意代码。这一发现引发了广泛关注,并引起了Windows用户的担忧。 导语 随着科技的不断进步,…...

最新 vie-vite框架下 jtopo安装使用

官方地址 官方源码 安装下载 1.官方好像都没有给git地址,尝试npm安装报错 2.找到1.0.5之前的版本npm i jtopo2,安装成功后使用报错,应该是版本冲突了 1.本地引入, 点击官方源码下载,需要jtopo_npm文件 2.引入到本…...

基础课20——智能客服系统的使用维护

1.智能客服系统的维护 智能客服系统在上线后,仍然需要定期的维护和更新。这是因为智能客服系统是一个复杂的软件系统,涉及到多个组件和功能,需要不断优化和改进以满足用户需求和保持市场竞争力。 保持系统的稳定性和性能:随着用…...

Aop自定义注解生成日志

Aop自定义注解生成日志 1.编写自定义注解 //表示此注解可以标注在方法上 Target(ElementType.METHOD) //运行时生效 Retention(RetentionPolicy.RUNTIME) public interface OpetionLog {//定义一个变量,可以接收参数String value() default "";}2.Cont…...

虚幻引擎:RPC:远端调用

1.如何区当前是服务器还是在客服端 2.如何修改一个actor的所有权 修改所有权必须 在服务器上进行修改,不允许在客户端进行修改...

涉及多种位运算操作混合类题目——通过加转三进制(扩大状态,不变枚举量):CF1033F

https://www.luogu.com.cn/problem/CF1033F 我们发现直接用二进制来做很难做,但我们可以观察其给的表 我们发现如果表示成和的形式是容易进行一一对应的 对于询问的时候,我们直接枚举每位有的和是多少,虽然状态是三次的,但是对于…...

BIOS开发笔记 - DDR基础

简介 内存是计算机中重要的组成部分,主要为CPU计算时提供一个数据的临时存储的场所。CPU在处理数据前,会将数据从外存复制到内存中,然后再处理内存中的数据,如果需要将结果保存,则一次性写回外存,这样便大大提高CPU的处理效率。 …...

基于SpringBoot+Vue的旅游系统、前后端分离

博主24h在线,想要源码文档部署视频直接私聊,低价有偿! 基于SpringBootVue的旅游系统、前后端分离 开发语言:Java 数据库:MySQL 技术:SpringBoot、Vue、Mybaits Plus、ELementUI 工具:IDEA/Eci…...

手动制作Docker容器镜像

文章目录 手动制作Docker容器镜像说明前期准备制作镜像1.启动一个centos系统的容器2.在centos容器中源码安装httpd服务3.基于已经安装好httpd服务的centos容器制作一个httpd镜像4.验证制作出来的镜像的功能5.上传至自己的docker镜像仓库(可选) 手动制作D…...

WPF布局控件之WrapPanel布局

前言:博主文章仅用于学习、研究和交流目的,不足和错误之处在所难免,希望大家能够批评指出,博主核实后马上更改。 概述: 后续排序按照从上至下或从右至左的顺序进行,具体取决于方向属性的值。WrapPanel 位…...

实现自动接听电话

在Android 12中实现自动接听电话的功能可以通过使用特定的API来实现,具体的实现方法如下: 导入需要的类库和接口 import android.content.BroadcastReceiver; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.te…...

计算机网络之网络层(全)

网络层的功能 互联网在网络层的设计思路是,向上只提供简单灵活的、无连接的、尽最大努力交付的数据报服务。 路由器在能够开始向输出链路传输分组的第一位之前,必须先接收到整个分组,这种机制称为:存储转发机制 异构网络互连 用…...

PS学习笔记合集

2.一些快捷键 一、放大快捷键 Ctrl:在画布中点击一次,即可放大一次,可多次点击。 CtrlShift:在画布中点击一次,即可放大到适合窗口大小。 CtrlAlt:在画布中点击一次,即可放大到适合窗口大小&a…...

汇总记录Python常用的基础内置方法

这里汇总记录一些Python常用的基础内置方法 (参照哔站有一个大佬"小飞有点东西"的笔记整理记录而得,仅限方便需要的时候可以直接在网上搜索查阅而整理记录) 输出/输入 print() input()print打印颜色设置 显示方式;前景颜色;背景颜色,这3个…...

基于Tensorflow卷积神经网络玉米病害识别系统(UI界面)

欢迎大家点赞、收藏、关注、评论啦 ,由于篇幅有限,只展示了部分核心代码。 文章目录 一项目简介 二、功能三、系统四. 总结 一项目简介 Tensorflow是一个流行的机器学习框架,可用于训练和部署各种人工智能模型。玉米病害识别系统基于Tensorf…...

Execution failed for task ‘:keyboard_utils:compileDebugKotlin‘.

Execution failed for task ‘:keyboard_utils:compileDebugKotlin’. 这个错误是keyboard_utils依赖报错。 这个问题在keyboard_utils github项目的issues 有记载Project does not run with new Flutter 2.10.0 详细错误信息: e: /Users/andreifufylev/developme…...

AC修炼计划(AtCoder Regular Contest 163)

传送门&#xff1a;AtCoder Regular Contest 163 - AtCoder 第一题我们只需要将字符串分成两段&#xff0c;如果存在前面一段比后面一段大就成立。 #include<bits/stdc.h> #define int long long using namespace std; typedef long long ll; typedef pair<int,int&g…...

持续进化,快速转录,Faster-Whisper对视频进行双语字幕转录实践(Python3.10)

Faster-Whisper是Whisper开源后的第三方进化版本&#xff0c;它对原始的 Whisper 模型结构进行了改进和优化。这包括减少模型的层数、减少参数量、简化模型结构等&#xff0c;从而减少了计算量和内存消耗&#xff0c;提高了推理速度&#xff0c;与此同时&#xff0c;Faster-Whi…...

【设计模式】第24节:行为型模式之“模板方法模式”

一、简介 模板方法模式在一个方法中定义一个算法骨架&#xff0c;并将某些步骤推迟到子类中实现。模板方法模式可以让子类在不改变算法整体结构的情况下&#xff0c;重新定义算法中的某些步骤。 模板模式有两大作用&#xff1a;复用和扩展。其中&#xff0c;复用指的是&#…...

【考研数学】数学“背诵手册”(二)| 线代及概率论部分

文章目录 引言二、线代施密特正交化分块矩阵转置、逆、伴随之间的运算关于秩定义性质 三、概统常见分布的期望及方差 引言 这数一全部内容太多了&#xff0c;放在一篇文章里的话&#xff0c;要编辑就很困难&#xff0c;就把线代和概率放在这篇文章里吧。 二、线代 施密特正交…...

Android WMS——WindowState介绍(十三)

前面文章中的 addWindow 方法,首先获取了 DisplayContent,紧接着判断窗口的 type 类型并标记。然后获取 token 信息,且该信息是通过 DisplayContent 中的方法获取的。最后就是创建并保存 WindowState 信息。 一、简介 在窗口管理系统(Window Manager Service,WMS)中,Wi…...

C/C++网络编程基础知识超详细讲解第二部分(系统性学习day12)

懒大王感谢大家的关注和三连支持~ 目录 前言 一、UDP编程 UDP特点&#xff1a; UDP框架: UDP函数学习 发送端代码案例如下&#xff1a; 二、多路复用 前提讲述 select poll 三、图解如下 总结 前言 作者简介&#xff1a; 懒大王敲代码&#xff0c;…...

【教3妹学编程-算法题】117. 填充每个节点的下一个右侧节点指针 II

2哥 : 3妹&#xff0c;听说你昨天去面试了&#xff0c;怎么样啊&#xff1f; 3妹&#xff1a;嗨&#xff0c;别提了&#xff0c;让我回去等通知&#xff0c;估计是没有通知了&#xff0c; 还浪费我请了一天假。 2哥 : 你又请假了啊&#xff0c; 你是怎么跟你那个严厉的老板请假…...

window10 mysql8.0 修改端口port不生效

mysql的默认端口是3306&#xff0c;我想修改成3307。 查了一下资料&#xff0c;基本上都是说先进入C:\Program Files\MySQL\MySQL Server 8.0这个目录。 看看有没有my.ini&#xff0c;没有就新建。 我这里没有&#xff0c;就新建一个&#xff0c;然后修改port&#xff1a; […...

欧盟网络安全威胁:虚假与错误信息

如今&#xff0c;数字平台已是新闻媒体的主战地。社交网站、新闻媒体、甚至搜索引擎都是现在大多数人的信息来源。由于这些网站的运作方式是通过吸引人们来产生网站流量&#xff0c;这些抓人眼球的信息通常是推广广告&#xff0c;有些甚至没有经过审查。 国际现状 恶意攻击者现…...

006 Linux 进程的概念 | 获取进程的PID

前言 本文将会向您进程的概念&#xff0c;程序与进程的区别&#xff0c;如何获取进程的标识符-pid 文章重点 1.描述进程——PCB 进程与程序的区别 CPU对进程列表的处理 2.获取进程PID 描述进程-PCB 进程概念 课本概念&#xff1a;程序的一个执行实例或正在执行的程序 内核…...

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测

时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测 目录 时序预测 | Python实现ARIMA-CNN-LSTM差分自回归移动平均模型结合卷积长短期记忆神经网络时间序列预测预测效果基本介绍程序设计参考资料 预测效果 基本介绍 时序预测 …...

《异常检测——从经典算法到深度学习》23 TimesNet: 用于常规时间序列分析的时间二维变化模型

zz# 《异常检测——从经典算法到深度学习》 0 概论1 基于隔离森林的异常检测算法 2 基于LOF的异常检测算法3 基于One-Class SVM的异常检测算法4 基于高斯概率密度异常检测算法5 Opprentice——异常检测经典算法最终篇6 基于重构概率的 VAE 异常检测7 基于条件VAE异常检测8 Don…...

计算机网络(59)

1. OSI 的七层模型分别是&#xff1f;各自的功能是什么&#xff1f; 2. 为什么需要三次握手&#xff1f;两次不行&#xff1f; 3. 为什么需要四次挥手&#xff1f;三次不行&#xff1f; 4. TCP与UDP有哪些区别&#xff1f;各自应用场景&#xff1f; 5. HTTP1.0&#xff0c;1.1&…...