DevExpress10个使用技巧

 

  DevExpress是非常主流的.NET控件,目前全世界和中国都用很多用户使用,不过由于是英文版,初次接触的同学可能会觉得困难,这里就总结DevExpress常见的10个使用技巧。

  1.TextEditor(barEditItem)取文本

以下是代码片段:
string editValue = barEditItem1.EditValue.ToString(); //错误,返回null string editValue = ((DevExpress.XtraEditors.TextEdit)barEditItem).EditValue.ToString();
//精确,返回文本框内容 DevExpress使用技巧

  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问题( DevExpress使用技巧) 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
(DevExpress使用技巧) ribbonControl.Manager.UseF10KeyForMenu
= false; //DX按钮 ApplicationIcon属性改动图标右键 Add ApplicationMenu 添加evExpress.XtraBars.Ribbon.ApplicationMenu

  5.HitInfo

以下是代码片段:
//在Tab页上点击右键的工作响应(DevExpress使用技巧) 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使用技巧) 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); } } }

 

 

优秀的菜单控件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);

                }

           
}

       
}

 

版权声明:本文为hboy2015原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/hboy2015/articles/5077681.html