DevExpress的10个使用技巧
DevExpress的10个使用技巧
DevExpress是非常主流的.NET控件,目前全世界和中国都用很多用户使用,不过由于是英文版,初次接触的同学可能会觉得困难,这里就总结DevExpress常见的10个使用技巧。
1.TextEditor(barEditItem)取文本
以下是代码片段: |
2.ComboBoxEdit(barEditItem)添加
以下是代码片段: |
3.ComboBoxEdit(barEditItem)取文本
以下是代码片段: |
4.Ribbon控件
以下是代码片段: |
5.HitInfo
以下是代码片段: |
6.皮肤
以下是代码片段: |
7.dockManager
将视图的状况信息保管到xml文件
dockManager1.SaveLayoutToXml(“..\\UserConfig\\ViewInfo.xml”); 导出xml中保管的状况信息
dockManager1.RestoreLayoutFromXml(“..\\UserConfig\\ViewInfo.xml”);
8.barManager
设置bar的字体与系统字体 barAndDockingController1.AppearancesBar.ItemsFont = new
Font(this.Font.FontFamily, currentFontSize);
9.设置系统字体
以下是代码片段: |
10.treeView
为tree节点加右键菜单并选中该节点
以下是代码片段: |
优秀的菜单控件DevExpress Bar使用初探
前一阵子在做项目时,用到了Develper
Experss Inc. 的DevExpress
Bar控件,感觉它真是一个好东西,可以完全取代Delphi现有的Menu控件和ToolBar控件,其功能也是第三方控件中的佼佼者。故在此写一点点自己的所得和体会,希望能够对各位朋友有所帮助。
DevExpress Bar安装后,控件栏新添了ExpressBars页:
我们使用的主要是第二个dxBarManager控件。这里,以建立一个含有菜单和快捷工具栏的应用程序为例。
新建工程,将其放置到Form1上如图:
双击该控件,出现设置窗口(如下图)。所有的设置均是在该窗口中完成的。
可以看到,设置窗口分成若干个Tab页面,来进行不同的设置。Toolbars页面的目的是设置不同的工具条。由于我们要建立菜单和快捷工具栏,所以点击“New”(如图),加入两个ToolBar,分别命名为MenuBar和FastBar。
加入后,设置窗口如图:
可以注意到,加入工具条后,Form1上出现了两个浮动工具条。这就是我们刚刚加入的,它具有浮动的功能,并且初始状态时浮动状态:
将鼠标指向工具条,按住左键并移动,可以将其停靠到Form的任一边缘。我们将MenuBar停靠到最上方,FastBar停靠到MenuBar的下方:
这只是一个空壳子。下面我们加入菜单:双击dxBarManager控件,打开Commands页,在右侧右键点击鼠标,出现如图弹出菜单。选择其中的Add。
在弹出的窗口(如图)中,Type选择TdxBarSubItem,这是一个能够放置其它种类按钮的容器。Caption置为标题。这里设成“文件”
确定后,可以看到其加入了Command:中
但是,它并没有加入到Form上。用鼠标左键点中上图中的“文件”,按住不放,将其拖放到Form1的MenuBar中:(在拖动的过程中,鼠标的形状为一个小矩形右下角一个x,当移动到能够放置的位置时x变成+表示能够加入)
接下来,加入“文件”下的各个按钮。还是在Command页右侧右击鼠标,
Type不用变,Caption设置为New。确定后,New出现在Commands中。还是选中New,将其拖放到Form上的MenuBar的File中。当拖至File时,File自动弹开,将New放置到弹开的空白处即可。其结果如右图。
同理,可以加入其它的菜单项,如Save、Save As、Close等等。
处理完了文件菜单,可以同样加入Edit等等菜单。这样,我们就构建了菜单。下一步是购建快捷工具栏。
同样,还是双击dxBarManager控件,打开Commands页,右击,选取Add。不过这时的Type选择TdxBarLargeButton。确定后,再将其从Commands页拖动到FastBar上:
一个快捷按钮就做好了。同理加入其它的。
这时可以发现,快捷按钮没有图标,很难看。解决它:加入一个ImageList,再向其中加入相应的图片,选中dxBarManager1,将其LargeImages属性设置为刚刚加入的ImageList,再点中上图中的Save按钮,就可以在其LargeImageIndex下拉条中选择图标了。
同样可以为MenuBar的项目设置图标:同样加入一个ImageList,再向其中加入相应的图片,选中dxBarManager1,将其Images属性设置为刚刚加入的ImageList,点中上图中的“文件”,再在弹出的菜单项中选择“New”按钮,就可以在其ImageIndex下拉条中选择图标了。
这样,一个含有菜单和快捷工具栏的应用程序的界面部分就差不多了。剩下的,就是在各个Button的OnClick(或者其它的)Event中编写代码了。
总结一下,实际上dxBarManager控件的简单的开发过程为:
1、 在ToolsBar页中,生成各个ToolBar;
2、 将各个ToolBar拖放到合适的地方;
3、 在Command 页中,加入各种按钮;
4、 将各个按钮拖放的合适的地方(比如ToolBar中或其它容器,例如TdxBarSubItem中)
实际上,在dxBarManager控件中,不仅仅提供了TdxBarButton、TdxBarLargeButton,还提供了用于各种列表、图像、字体的种种按钮,其使用方法同样只需要在dxBarManager控件的Commands页面中生成之后通过拖放就可以了。当然在使用前还需要设置各自的属性。
本文仅仅简单说明了dxBarManager控件的使用,希望能够起到抛砖引玉的作用,并且希望能够得到各位朋友的批评和指正。若有问题欢迎共同探讨:lff0305@163.com(欢迎转载,但作者保留版权)
DevExpress控件使用 收藏
零零散散的先总结一下吧
1.TextEditor(barEditItem)取文本
string editValue = barEditItem1.EditValue.ToString(); //错误,返回null
string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString(); //正确,返回文本框内容
2.ComboBoxEdit(barEditItem)添加Item
string item = “comboboxItem1”;
((DevExpress.XtraEditors.Repository.RepositoryItemComboBox)this.barEditItem.Edit).Items.Add(item);
3.ComboBoxEdit(barEditItem)取文本
string itemValue = this.barEditItem.EditValue.ToString();
4.Ribbon控件
//添加Page
DevExpress.XtraBars.Ribbon.RibbonPage ribbonPage = new RibbonPage();
ribbonControl.Pages.Add(ribbonPage);
//添加Group
DevExpress.XtraBars.Ribbon.RibbonPageGroup ribbonPageGroup = new RibbonPageGroup();
ribbonPage.Groups.Add(ribbonPageGroup);
//添加Button
DevExpress.XtraBars.BarButtonItem barButtonItem = new BarButtonItem();
ribbonPageGroup.ItemLinks.Add(barButtonItem);
//添加barSubItem
DevExpress.XtraBars.BarSubItem barSubItem = new BarSubItem();
ribbonPageGroup.ItemLinks.Add(barSubItem);
//barSubItem下添加Button
barSubItem.AddItem(barButtonItem);
//奇怪的删除Page问题
while (this.ribbonControl.Pages.Count > 0)
{
ribbonControl.Pages.Remove(ribbonControl.Pages[0]); //调试正常,运行报异常
}
while (this.ribbonControl.Pages.Count > 0)
{
ribbonControl.SelectedPage = ribbonControl.Pages[0];
ribbonControl.Pages.Remove(ribbonControl.SelectedPage); //运行正常
}
//禁止F10键Tips
ribbonControl.Manager.UseF10KeyForMenu = false;
//DX按钮
ApplicationIcon属性改变图标
右键 Add ApplicationMenu 添加evExpress.XtraBars.Ribbon.ApplicationMenu
5.HitInfo
//在Tab页上点击右键的事件响应
void xtraTabbedMdiManager_Event(object
sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right && ActiveMdiChild != null)
{
DevExpress.XtraTab.ViewInfo.BaseTabHitInfo hInfo =
xtraTabbedMdiManager.CalcHitInfo(e.Location);
//右键点击位置:在Page上且不在关闭按钮内
if (hInfo.IsValid && hInfo.Page != null && !hInfo.InPageCloseButton)
{
this.popupMenu.ShowPopup(Control.MousePosition);//在鼠标位置弹出,而不是e.Location
}
}
}
//在ribbon上点击右键的事件响应
private void ribbonControl1_ShowCustomizationMenu(object sender, RibbonCustomizationMenuEventArgs e)
{
//禁掉原系统右键菜单
e.ShowCustomizationMenu = false;
//右键位置:在barButtonItem上
if (e.HitInfo != null
&& e.HitInfo.InItem
&& e.HitInfo.Item.Item is BarButtonItem)
{
this.popupMenu.ShowPopup(Control.MousePosition);
}
//右键位置:在barSubItem中的barButtonItem上
else if (e.Link != null
&& e.Link.Item != null
&& e.Link.Item is BarButtonItem)
{
this.popupMenu.ShowPopup(Control.MousePosition);
}
}
6.皮肤
//添加皮肤程序集后注册皮肤
DevExpress.UserSkins.OfficeSkins.Register();
DevExpress.UserSkins.BonusSkins.Register();
//设置皮肤
DevExpress.LookAndFeel.UserLookAndFeel.Default.SetSkinStyle(“Liquid Sky”); //若皮肤名称错误则按系统默认设置(第一个皮肤)
//GalleryFilterMenuPopup事件设置弹出筛选菜单的“All Groups”为中文
private void rgbiSkins_GalleryFilterMenuPopup(object sender, GalleryFilterMenuEventArgs e)
{
e.FilterMenu.ItemLinks[n].Caption = “所有皮肤”; //n=分组数+1
}
//GalleryInitDropDownGallery事件设置弹出皮肤列表的表头“ALL Groups”为中文
private void rgbiSkins_GalleryInitDropDownGallery(object sender, InplaceGalleryEventArgs e)
{
e.PopupGallery.FilterCaption = “所有皮肤”;
}
7.dockManager
将视图的状态信息保存到xml文件
dockManager1.SaveLayoutToXml(“..\\UserConfig\\ViewInfo.xml”);
导出xml中保存的状态信息
dockManager1.RestoreLayoutFromXml(“..\\UserConfig\\ViewInfo.xml”);
8.barManager
设置bar的字体与系统字体
barAndDockingController1.AppearancesBar.ItemsFont = new Font(this.Font.FontFamily, currentFontSize);
9.设置系统字体
DevExpress.Utils.AppearanceObject.DefaultFont = new Font(this.Font.FontFamily, currentFontSize);
10.treeView
为tree节点加右键菜单并选中该节点
private void treeList1_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button == MouseButtons.Right)
{
DevExpress.XtraTreeList.TreeListHitInfo hi = treeList1.CalcHitInfo(e.Location);
if (hi.Node != null && hi.Node.ImageIndex == 5) //叶子节点的ImageIndex == 5
{
TreeListNode node = treeList1.FindNodeByID(hi.Node.Id);
treeList1.FocusedNode = node;
this.popupMenu1.ShowPopup(MousePosition);
}
}
}