重点是右键菜单的实现。
菜单栏 MenuStrip,支持可视化编辑
添加 MenuStrip
添加菜单、菜单项、分隔线给菜单项设置属性
—Name 字段名,Text 文本显示,Image:图标
给菜单项添加事件处理(双击即可)
直接输入文字即可
后边还能继续添加菜单
运行项目
选择对应的菜单项,右键选择属性
Image 属性,表示前面显示的图标
直接双击 菜单键 即可创建事件方法
默认添加Click 事件处理
首先添加图片资源到Resource.resx中
右键选择,需要更换图标的菜单栏,选择Image 属性,添加图片
运行项目
此时,图标就已经显示在菜单栏前面
工具栏 ToolStrip,主要用于显示工具按钮演示:。。
添加资源文件到Resource.resx 中
右键选择属性,修改Image 属性
运行结果
1 工具栏的按钮代表一些常见的功能工具按钮和菜单项是对应的,应选择同一个回调
双击工具栏按钮,即可为其创建事件处理(建议先为控件创建一个规范的名字)
可以通过事件下拉列表,选择事件方法,为两个控件,同时绑定同一个方法处理
此处可以给菜单栏也绑定该方法
右键菜单,ContextMenuStrip,即上下文菜单
例如,一个ListBox上右键点击时,显示上下文菜单
在设计器里直接可视化编辑即可
编辑方式,和普通菜单栏是同样的
添加菜单项
此时运行,右键菜单并不会直接显示
给每个菜单项,修改合适的Name(规范命名)
编辑为 menuItem_Edit
删除为 menuItem_Del
void listBox1 MouseUp(sender, e), 或者void listBox1 MouseDown(sender, e)
contextMenuStrip1.Show(listBox1,e.Location);
运行结果,点击右键
作不同的处理
若点中了一项,则允许某些菜单(修改/删除)
若点中任何项,则禁用某些菜单(修改/删除)
需要达到效果,根据他所点击的内容,做出相应的处理(空白处点击不应该出现该菜单,应该在内容上点击才出现)
调用Listbox 的IndexFromPoint 获取指定坐标处的索引(为点中 返回-1)
运行结果
选中
未选中
也可以使用Visible = true/false 设置该右键菜单,显示与否
1根据鼠标点击的位置,判断点中了哪一项
int index = listBox1.IndexFromPoint(e.Location);