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

news2024/11/16 7:54:27

文章目录

    • 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表达式
希望有所帮助,同时欢迎关注我,后面将更新更多相关内容!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1163809.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

WebDAV之π-Disk派盘 + 一叶日记

推荐一款操作方便、界面简洁,记录生活点滴与心情,具有诗情画意的日记软件。 一叶日记是一款记录日记的手机软件,在这款软件中它里面有着各种不同的工具,可以方便用户去随时随地的记录日记,同时里面还有着各种不同的主题背景,可以供用户去选择使用各种功能,给用户记录带…

精准努力,提升自己的核心竞争力——中国人民大学与加拿大女王大学金融硕士

步入职场,相信大家都想成为职场的宠儿。经过一番摸爬滚打后,在职场稳固了地位。但想叱咤职场,还需要精准努力,提升自己的核心竞争力。中国人民大学与加拿大女王大学金融硕士项目为你补给能量。 任何资产都有贬值的风险&#xff0…

超好用的IDEA插件推荐,写完代码直接调试接口

Apipost推出IDEA插件非常省时高效,写完代码直接可以进行调试,而且支持生成接口文档,真是后端神器啊! 可以点击下方链接安装更新或在插件商店中搜索安装 下载链接:https://plugins.jetbrains.com/plugin/22676-apipos…

解决postman打开一直转圈圈的问题

项目场景: 对于后端开发来说,Postman是经常使用的。特别是一些前后端分离的项目,后端开发测试接口就需要一款好用的接口测试工具,postman就是一款使用方便功能比较齐全的测试工具 问题描述 最近使用postman进行接口测试&#xf…

矢量图编辑_Inkscape裁剪与蒙版

文章目录 一、简介二、示例三、裁剪 Clipping四、蒙版 Masking 一、简介 裁剪(Clipping) 和 蒙版/遮罩(masking) 是限制对象(或对象组)哪一部分可见的方法。对于裁剪, 裁剪路径(cli…

window安装不同版本的mysql

引用:https://blog.csdn.net/weixin_45151960/article/details/113537526 当安装第二个的时候,,会有问题,, 下载mysql8 和 mysql5.7 : https://downloads.mysql.com/archives/community 下载之后&#xff…

项目实战:通过axios加载水果库存系统的首页数据

1、创建静态页面 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title><link rel"stylesheet" href"style/index.css"><script src"script/axios.mi…

python调用飞书机器人发送文件

当前飞书webhook机器人还不支持发送文件类型的群消息&#xff0c;可以申请创建一个机器人应用来实现群发送文件消息。 创建机器人后&#xff0c;需要开通一系列权限&#xff0c;然后发布。由管理员审核通过后&#xff0c;才可使用。 包括如下的权限&#xff0c;可以获取群的c…

项目实战:封装响应结果以及抽取响应代码到工具类

1、创建GsonUtil工具类&#xff0c;封装把java对象转成json字符串方法 package com.csdn.fruit.util; import com.google.gson.Gson; public class GsonUtil {public static String toJson(Object obj) {//java object -> java json stringGson gson new Gson();return gs…

Kibana中使用Dev Tools控制台创建索index引同时添加date类型的时间参数(用于根据时间序列展示数据)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

Jmeter参数化 —— 循环断言多方法

1、参数化接口测试数据 注意&#xff1a;csv文档参数化&#xff0c;里面有多少条数据&#xff0c;就要在线程组里循环多少次&#xff0c;不然就只执行一次 2、添加配置元件-计数器 关于计数器&#xff1a; ①Starting Value&#xff1a;给定计数器的初始值; ②递增&#xff1a…

listFiles()为null原因

调用listFiles为null原因 前言一、错误原因二、正确使用方法 前言 今天笔者在对File文件进行listFiles方法调用时&#xff0c;发现报错返回空指针异常&#xff0c;下面是列举的可能出现的错误的原因。 一、错误原因 不能对文件进行listFiles方法调用 二、正确使用方法 对文件夹…

TSINGSEE青犀景区AI智慧监管平台,赋能文旅行业高质量发展

一、背景需求分析 随着我国旅游经济的蓬勃发展&#xff0c;旅游行业逐渐成为国民经济增长的支柱性产业。“十四五”期间&#xff0c;国内旅游业将从高速增长阶段转向高质量发展阶段&#xff0c;与此同时&#xff0c;旅游景区的安全生产工作也迎来了新的挑战和需求。尤其是节假…

Ceph:关于Ceph 中创建和管理自定义 CRUSH Map

写在前面 准备考试&#xff0c;整理 Ceph 相关笔记博文内容涉及&#xff0c;管理和定制CRUSH Map以及管理OSD Map理解不足小伙伴帮忙指正 对每个人而言&#xff0c;真正的职责只有一个&#xff1a;找到自我。然后在心中坚守其一生&#xff0c;全心全意&#xff0c;永不停息。所…

python requests模块的使用以及网页信息爬取

python requests模块的使用以及网页信息爬取 文章目录 python requests模块的使用以及网页信息爬取网页信息爬取REQUEST模块模块中的请求方法请求方法中的参数响应对象中属性 获取网站中的源代码获取图片地址匹配单个字符匹配一组字符其他元字符核心函数 图片下载 requests 模块…

经验总结2023-11-2

axios发起post请求的方式&#xff1a; 要解决跨域问题&#xff0c;后端要加&#xff0c;指定支持的方法是Pos还是get&#xff1a;

leetCode 198.打家劫舍 动态规划入门:从记忆化搜索到递推

leetCode 198.打家劫舍 198. 打家劫舍 - 力扣&#xff08;LeetCode&#xff09; 你是一个专业的小偷&#xff0c;计划偷窃沿街的房屋。每间房内都藏有一定的现金&#xff0c;影响你偷窃的唯一制约因素就是相邻的房屋装有相互连通的防盗系统&#xff0c;如果两间相邻的房屋在同一…

地空智能国产化RTS无线探地雷达

广东地空智能科技有限公司推出的国产RTS无线探地雷达&#xff0c;是国内首款基于实时采样、高叠加技术的无线连接的探地雷达。RTS系列雷达是主机、天线一体化设计&#xff0c;32Bit数据&#xff0c;内部配置WiFi基站&#xff0c;无线传输距离≥100M&#xff0c;1000mAh进口电芯…

十九、类型信息(6)

接口和类型 interface 关键字的一个重要目标就是允许程序员隔离组件&#xff0c;进而降低耦合度。使用接口可以实现这一目标&#xff0c;但是通过类型信息&#xff0c;这种耦合性还是会传播出去——接口并不是对解耦的一种无懈可击的保障。比如我们先写一个接口&#xff1a; …

Java实验二类编程实验

1.编写一个代表三角形的类&#xff08;Triangle.java&#xff09;。 其中&#xff0c;三条边a,b,c&#xff08;数据类型为double类型&#xff09;为三角形的属性&#xff0c;该类封装有求三角形的面积和周长的方法。分别针对三条边为3、4、5和7、8、9的两个三角形进行测试&…