winform入门篇 第13章 菜单栏

菜单栏

本章内容
菜单栏
工具栏
右键菜单

重点是右键菜单的实现。

菜单栏 MenuStrip,支持可视化编辑
添加 MenuStrip
添加菜单、菜单项、分隔线给菜单项设置属性
—Name 字段名,Text 文本显示,Image:图标
给菜单项添加事件处理(双击即可)

1.添加菜单栏

在这里插入图片描述

2.添加菜单项

直接输入文字即可
在这里插入图片描述

后边还能继续添加菜单
在这里插入图片描述

运行项目

在这里插入图片描述

3.添加属性

选择对应的菜单项,右键选择属性
在这里插入图片描述
在这里插入图片描述

Image 属性,表示前面显示的图标

在这里插入图片描述

4.添加事件

直接双击 菜单键 即可创建事件方法
在这里插入图片描述

默认添加Click 事件处理

在这里插入图片描述

5.添加图标

首先添加图片资源到Resource.resx中
在这里插入图片描述
在这里插入图片描述

右键选择,需要更换图标的菜单栏,选择Image 属性,添加图片

在这里插入图片描述

运行项目

在这里插入图片描述

此时,图标就已经显示在菜单栏前面

工具栏

工具栏 ToolStrip,主要用于显示工具按钮演示:。。

1.添加工具栏

在这里插入图片描述

2.添加控件

在这里插入图片描述

3.修改图标

添加资源文件到Resource.resx 中

在这里插入图片描述

右键选择属性,修改Image 属性

在这里插入图片描述

运行结果

在这里插入图片描述

要点与细节

1 工具栏的按钮代表一些常见的功能工具按钮和菜单项是对应的,应选择同一个回调

双击工具栏按钮,即可为其创建事件处理(建议先为控件创建一个规范的名字)
在这里插入图片描述

可以通过事件下拉列表,选择事件方法,为两个控件,同时绑定同一个方法处理

此处可以给菜单栏也绑定该方法
在这里插入图片描述

*右键菜单

右键菜单,ContextMenuStrip,即上下文菜单

例如,一个ListBox上右键点击时,显示上下文菜单

1 添加 ContextMenuStrip

在设计器里直接可视化编辑即可
在这里插入图片描述
编辑方式,和普通菜单栏是同样的

添加菜单项
在这里插入图片描述
此时运行,右键菜单并不会直接显示

给每个菜单项,修改合适的Name(规范命名)
在这里插入图片描述
编辑为 menuItem_Edit
删除为 menuItem_Del

2 给ListBox添加鼠标事件 MouseUp

void listBox1 MouseUp(sender, e), 或者void listBox1 MouseDown(sender, e)
在这里插入图片描述
在这里插入图片描述

3 弹出上下文菜单

contextMenuStrip1.Show(listBox1,e.Location);
在这里插入图片描述

运行结果,点击右键

在这里插入图片描述

4 区分上下文

作不同的处理
若点中了一项,则允许某些菜单(修改/删除)
若点中任何项,则禁用某些菜单(修改/删除)

需要达到效果,根据他所点击的内容,做出相应的处理(空白处点击不应该出现该菜单,应该在内容上点击才出现)

调用Listbox 的IndexFromPoint 获取指定坐标处的索引(为点中 返回-1)

在这里插入图片描述

运行结果

选中
在这里插入图片描述

未选中
在这里插入图片描述
也可以使用Visible = true/false 设置该右键菜单,显示与否

要点与细节

1根据鼠标点击的位置,判断点中了哪一项
int index = listBox1.IndexFromPoint(e.Location);

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

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

相关文章

数据库(MYSQL):SQL分类之DDL详解

1.SQL简介 1.SOL通用语法 1.SQL语句可以单行或多行书写,以分号结尾。 2.SQL语句可以使用空格/缩进来增强语句的可读性。 3.MySQL数据库的SQL语句不区分大小写,关键字建议使用大写, 4.注释: 单行注释…

在属性值中使用 JavaScript 表达式进行运算

在 Vue 模板中,属性值通常被解析为字符串。如果你想要在属性值中使用 JavaScript 表达式进行运算,可以使用冒号 : 将属性值声明为 JavaScript 表达式。这样,Vue 就会将属性值解析为 JavaScript 表达式,并且计算其结果,…

C# linq 根据多字段动态Group by

实现类&#xff1a; public static class LinqHepler {/// <summary>/// 根据单个字段动态Group/// </summary>/// <typeparam name"T"></typeparam>/// <param name"source"></param>/// <param name"prop…

Mysql 事物阻塞

1、查看现有事物&#xff08;锁&#xff09;&#xff0c;批量生成 kill 命令 select CONCAT(kill , trx_mysql_thread_id, ;) as kill_command, a.* from information_schema.innodb_trx as a -- where trx_query is null 2、查看指定数据库的线程&#xff0c;及其对应的事…

OSPF的P2P和Broadcast

OSPF为什么会有P2P和BROADCAST两种类型 OSPF&#xff08;开放最短路径优先&#xff09;协议中存在P2P&#xff08;点对点&#xff09;和BROADCAST&#xff08;广播多路访问&#xff09;两种网络类型&#xff0c;主要是为了适应不同类型的网络环境和需求。具体分析如下&#xf…

Jmeter 压测-Jprofiler定位接口相应时间长

1、环境准备 执行压测脚本&#xff0c;分析该接口tps很低&#xff0c;响应时间很长 高频接口在100ms以内&#xff0c;普通接口在200ms以内 2、JProfiler分析响应时间长的方法 ①JProfiler录制数据 压测脚本&#xff0c;执行1-3分钟即可 ②分析接口相应时间长的方法 通过Me…

Python 12306抢票脚本

请注意&#xff0c;编写或使用抢票脚本可能违反相关网站的服务条款和法律法规。以下内容仅供学习和了解技术原理之用&#xff0c;不鼓励或支持任何违反规定的行为。 Python 12306抢票脚本通常涉及以下几个步骤&#xff1a; 登录&#xff1a;使用Python的requests库模拟登录123…

Louvain算法简介

1. 背景 Louvain算法是一种基于图数据的社区发现算法(community detection)&#xff0c;算法的优化目标为最大化整个数据的模块度&#xff0c;模块度的计算如下&#xff1a; 其中m为图中边的总数量&#xff0c; 表示所有指向节点 i 的连边权重之和。 表示节点 i&#xff0c;j 之…

每日一练 | 华为认证真题练习Day216

1、如果路由器system视图下和BGP视图下都配置了router-id&#xff0c;由于BGP视图优先级高&#xff0c;则BGP使用BGP视图下的router-id A. 对 B. 错 2、关于NSSA的命令描述&#xff0c;错误的是&#xff1a; A. default-route-advertise命令用来将缺省路由通告到普通OSPF区域…

14_SpringMVC

文章目录 MVCSpringMVC与JavaEE对比SpringMVCSpringMVC的核心流程SpringMVC入门案例RequestMapping注解的使用Handler方法的返回值Handler方法的形参keyvalue形式的请求参数Json请求参数 RESTful风格接口静态资源处理FilterHandlerInterceptor异常处理SpringMVC核心流程流程图 …

ElasticSearch倒排索引原理是什么?如何实现?

1、ElasticSearch倒排索引原理是什么&#xff1f; ElasticSearch的倒排索引原理是一种高效的信息检索技术&#xff0c;它允许用户快速搜索文档中的关键字。以下是其原理的详细解释&#xff1a; 1、文档分析&#xff1a;在索引文档之前&#xff0c;ElasticSearch会对文档进行分…

sudo apt install ros-humble-gazebo-*显示网络不可达 Ubuntu20.04使用清华镜像本地安装/更新ros2

问题 sudo apt install ros-humble-gazebo-*显示网络不可达&#xff0c;这是因为sources.list中的镜像源有问题&#xff0c;换成清华源可以解决问题 解决 1 设置Ubuntu镜像源为清华镜像源 1.1 备份source.list文件 sudo cp /etc/apt/sources.list /etc/apt/sources.list.ba…

线圈、寄存器、存储区代号、功能码 案例说明

线圈和寄存器 表示数据类型 线圈&#xff1a;表示Boolean数据类型 寄存器&#xff1a;表示非Boolean数据类型&#xff0c;用来暂时存放参与运算的数据和运算结果&#xff0c;具有接收数据、存放数据和输出数据的功能。 ModbusRTU 读输出线圈 存储区代号 0区 功能码 0x01 读输入…

金牌客服的宝藏App——客服宝快捷回复软件

在客户服务领域&#xff0c;时间就是金钱&#xff0c;效率就是生命。作为一名荣获“金牌客服”称号的小编&#xff0c;我深知快捷回复工具对于提升工作效率和客户满意度的重要性。今天&#xff0c;我要向大家推荐一款在客服界小有名气的神器——客服宝聊天助手。这款快捷回复软…

PCG共轭梯度最小二乘相位解包裹-matlab(可直接运行)

phase_unwrap.m %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % 根据Ghiglia和Romero(1994)提出的方法,基于加权和非加权最小二乘法进行相位解包裹 % 链接:https://doi.org/10.1364/JOSAA.11.000107 % 输…

Java 通过 SFTP 和 FTP 访问时相对路径引发的问题汇总

背景 常用的 Java SSH 操作工具包是 jsch &#xff0c;FTP 工具包 commons-net &#xff0c;本文介绍本文总结 Java 程序通过 SFTP 协议和 FTP 协议访问远程文件的过程中&#xff0c;需要注意的路径问题。 本文将解答下面三个问题&#xff1a; FTPClient 获取当前用户根目录…

2024.4.17

poll客户端 #include <myhead.h> #define IP "192.168.38.128" #define PORT 8889 int main(int argc, const char *argv[]) {//创建套接字int cfd socket(AF_INET,SOCK_STREAM,0);if(cfd -1){perror("cfd");return -1;}//绑定//......//连接服务…

python:数据容器

三、列表的循环&#xff1a; 语法&#xff1a; # 数据容器存储多个元素&#xff0c;将容器内的数据依次取出进行处理&#xff0c;称之为&#xff1a;遍历、迭代 # 遍历列表的元素—通过while循环 # 如何取出列表的元素— 通过列表[下标]的方式取出数据 # 循环条件的控制 1、定…

C++动态内存管理 解剖new/delete详细讲解(operator new,operator delete)

讨厌抄我作业和不让我抄作业的人 讨厌插队和不让我插队的人 讨厌用我东西和不让我用东西的人 讨厌借我钱和不借给我钱的人 讨厌开车加塞和不让我加塞的人 讨厌内卷和打扰我内卷的人 一、C中动态内存管理 1.new和delete操作内置类型 2.new和delete操作自定义类型 二、operat…

Linux第91步_了解“platform总线,platform驱动和platform设备”,以及驱动框架和设备框架

plattorm是为了驱动的分离与分层而提出来的一种框架&#xff0c;其驱动的具体实现还是需要字符设备驱动、块设备驱动或网络设备驱动。 对于一个完整的驱动程序&#xff0c;必须提供“有设备树”和“无设备树”两种匹配方法。 1、总线 Linux系统内核使用bus_type结构体表示总线…