DevExpress 控件
一、实现弹出式菜单
经常需要通过鼠标右键打开菜单,进行相应的操作。这里需要使用到barmanager控件和popupMenu控件。
为什么需要引入这两个组件才可以实现。主要barmanager 组件其实对用户来说是不可视的,就像名字一样,其实是充当一个bar 管理者的身份;工具栏,菜单栏(popupMenu),状态面板等才是面向用户的。
对这两个控件的描述,VS 中显示如下:
控件 | 描述 |
---|---|
barmanager | Allow you to create bars and forms. 这是一个Bar管理器,允许你创建一系列的工具项 |
popupMenu | Displays a shortcut menu that can be displayed at any position of screen. 可以在屏幕的任意位置上显示一个快捷菜单,类比win10 上的鼠标右键,可以设置鼠标当前位置(GirdControl自带这个属性MousePosition) |
1.添加BarManager 和 PopupMenu
通过工具箱添加这两组件到相应的窗体上
2.添加Bar 命令(Command)
2.1 通过使用BarManager 的Customize 添加
2.2 在BarManager中添加
通过定制面板添加。
点击 ‘modify 修改’项,可以在里面进行添加(Add),删除(Delete) bar命令等操作
在添加Bar 命令时,会发现有很多种类型的BarItem:
这里简单介绍本次会用到的类型Type,其他的类型我也没玩过,可以自己尝试一下。
类型Type | 描述Description |
---|---|
Button(BarButtonItem) | 很直白的名称,其实就是一个类似于按钮Button 功能的一个BarItem。可以点击Click等事件,都可以在属性栏,或者事件栏中查看 |
Menu(BarSubItem) | 这也是一个Menu菜单,也就是一个子菜单,里面可以包含其他的BarItems。添加这个类型就类似于windows系统下鼠标右键后,“新建”子菜单下有很多选择项 |
2.3 在PopupMenu中添加Bar 命令
首先,既然PopupMenu中的Bar 命令是来之BarManager中的,那么需要先指定这个BarManeger,通过PopupMenu.Manager 属性指定(可以在代码中使用这个属性为PopupMenu动态指定):
在VS 属性栏中,找到Manger属性下拉框指定
所以当使用PopupMenu时,需要指定相应的BarManager。当你打开Popup Menu 的Customzie面板时,下面的背景面板就是管理的BarManger。
你可以拖拽BarManager 中已经添加的Bar 命令到PopupMenu中,或者在PopupMenu中直接添加Add(然后,你会发现,添加的Bar 命令会自动同步到关联的BarManger中,坐实了BarManager作为管理器的地位)。
Tips:图片样式可以通过选中相应的Bar 命令(操作1),然后在属性栏中通过Iamge选择。
3. 添加事件Event
有了静态的UI之后,肯定是要添加事件来实现相应的业务场景。
3.1 鼠标事件
一般情况下,都是通过鼠标右键点击来显示菜单Menu。
DevExpress 中也存在监控鼠标的事件。(通过设计器Designer添加)
会生成如下事件:
private void gridView1_MouseUp(object sender, MouseEventArgs e)
{
}
其实DevExpress里面基本都会包含sender和e这两个参数。sender代表的含义是一样的,代表了触发该事件的对象。而e主要区别在于类型,即不同的事件,类型是不同的。
这里鼠标事件的对象类型时MouseEventAtgs,它所包含的属性和方法可以F12查看。因为没有特别复杂的方法,不在做介绍,可以自己查看。
这里主要使用Button 属性,这是一个MouseButton类型的枚举值(F12查看)
所以,需要对gridView1_MouseUp 这个事件做如下实现
private void gridView1_MouseUp(object sender, MouseEventArgs e)
{
// 通过鼠标右键Right 来判断是否需要显示PopupMenu
if (e.Button == MouseButtons.Right)
{
popupMenu1.ShowPopup(Control.MousePosition);
}
}
对于popupMenu1.ShowPopup方法,还是需要自己去查看定义。我们都知道在Winform下,一个窗口是包含三个文件的,其中一个是.Designer.cs,这里包含了UI组件拖拽时自动生成的代码。所以可以很容易查看到popupMenu1的类型(DevExpress.XtraBars.PopupMenu),然后F12查看这个类所包含的属性和方法 。
自己去查看,是一个不错的学习方式和体验。英语不好,可以复制翻译,慢慢就会发现,变来变去其实就几个关键单词。
3.2 BarItems 添加事件
这里可以通过监控BarManager的点击事件,然后判断去触发哪个子项的业务。或者,直接在Bar 命令(操作1)的事件栏中,定义事件。
- 事件栏中定义
- 在BarManger 的事件中定义
barManager1_ItemClick 实现如下:即,当Bar 命令被点击时,会触发什么样的操作。
private void barManager1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
if (e.Item.Name == "barButtonItem1")
{
e.Item.ItemClick += ShowMessage_ItemClick;
}
else if (e.Item.Name == "barButtonItem2")
{
MessageBox.Show("进入barButtonItem2", "Info");
}
else
{
MessageBox.Show("没进入", "Info");
}
}
private void ShowMessage_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
{
MessageBox.Show("进入barButtonItem1", "Info");
}
4. Tips
细心的你可能发现了,右键有个子Menu还没有子项!!!
这里就自己试试添加UI以及业务实现吧。(以下)