DevExpress控件使用经验总结

DevExpress是一个比较有名的界面控件套件,提供了一系列的界面控件套件的DotNet界面控件。本文主要介绍我在使用DevExpress控件过程中,遇到或者发现的一些问题解决方案,或者也可以所示一些小的经验总结。总体来讲,使用DevExpress控件,可以获得更高效的界面设计以及更美观的效果。本文主要通过给出相应的例子以及相关界面效果来说明问题,希望大家能够从中获得好的知识和思路。 

1、 应用Office2007和Office2010的界面主题

开始使用DevExpress的时候,发现程序界面效果好像没有出现Office的样式,只是有几种可怜的内置效果。经过查找发现需要在入口函数里面添加几行代码,如下所示。

            DevExpress.UserSkins.OfficeSkins.Register();
            DevExpress.UserSkins.BonusSkins.Register();
            DevExpress.Skins.SkinManager.EnableFormSkins(); 

指定界面主题效果,可以通过代码设置,指定主题的名称即可。

UserLookAndFeel.Default.SetSkinStyle("Office 2010 Blue"); 

或者在界面中添加一个控件 DefaultLookAndFeel,设置其对应的界面效果即可实现整个设计时刻和运行时刻的界面效果,如下图所示。

 

2、Properties属性

DevExpress很多控件的一般属性,会放置在该属性下面,如ComboBox下拉列表的属性操作如下

        private void InitDictItem()
        {
            this.txtManufacture.Properties.Items.Clear();
            this.txtManufacture.Properties.Items.AddRange(DictItemUtil.GetDictByDictType("供货商"));
        }  

这是一个很丰富属性的归类,很多常用的属性基本上都囊括在这里了,如果你是从传统界面转换过来DevExperss开发,找不着相关的属性,尽管来这里看看。例如设置显示的可见性、可用性、

 自定义显示格式等等。

3、GridView的相关操作

获取选定行制定列的内容,用于删除记录的操作代码如下

DevExpess的GridView控件,和传统WinFrom的GridView有很大的不同,如他没有GetSelectedRow的行集合操作,但可以通过GetSelectedRows获取制定的行序号,通过行序号来进行操作,如要获得指定行,制定列的内容,可以通过GetRowCellDisplayText 获取文本或者通过GetRowCellValue获取对应的值。

如果需要获取当前选定行(焦点所在行)的制定列的数据,那么可以通过函数GetFocusedRowCellDisplayText("ID")来获取。

        private void winGridViewPager1_OnDeleteSelected(object sender, EventArgs e)
        {
            if (MessageUtil.ShowYesNoAndTips("您确定删除选定的记录么?") == DialogResult.No)
            {
                return;
            }

            int[] rowSelected = this.winGridViewPager1.GridView1.GetSelectedRows();
            foreach (int iRow in rowSelected)
            {
                string ID = this.winGridViewPager1.GridView1.GetRowCellDisplayText(iRow, "ID");
                BLLFactory<ItemDetail>.Instance.Delete(ID);
            }
            BindData();
        }

为GridView行提示信息以及显示行号,有时候为了方便数据的显示,需要在GridView的第一列显示该列的行信息以及行号,那么需要为GridView控件添加一个ToolTipController控件,然后实现该控件的GetActiveObjectInfo事件,在事件里面添加下面代码以及实现GridView控件的CustomDrawRowIndicator事件即可,如下代码所示。

        private void toolTipController1_GetActiveObjectInfo(object sender, DevExpress.Utils.ToolTipControllerGetActiveObjectInfoEventArgs e)
        {
            if (e.SelectedControl != gridControl1) return;

            ToolTipControlInfo info = null;
            //Get the view at the current mouse position
            GridView view = gridControl1.GetViewAt(e.ControlMousePosition) as GridView;
            if (view == null) return;

            //Get the view's element information that resides at the current position
            GridHitInfo hi = view.CalcHitInfo(e.ControlMousePosition);
            //Display a hint for row indicator cells
            if (hi.HitTest == GridHitTest.RowIndicator)
            {
                //An object that uniquely identifies a row indicator cell
                object o = hi.HitTest.ToString() + hi.RowHandle.ToString();
                StringBuilder sb = new StringBuilder();
                sb.AppendLine("行数据基本信息:");
                foreach (GridColumn gridCol in view.Columns)
                {
                    if (gridCol.Visible)
                    {
                        sb.AppendFormat("    {0}:{1}\r\n", gridCol.Caption, view.GetRowCellDisplayText(hi.RowHandle, gridCol.FieldName));
                    }
                }
                info = new ToolTipControlInfo(o, sb.ToString());
            }

            //Supply tooltip information if applicable, otherwise preserve default tooltip (if any)
            if (info != null)
            {
                e.Info = info;
            }
        }

         private void gridView1_CustomDrawRowIndicator(object sender, RowIndicatorCustomDrawEventArgs e)
        {
            if (ShowLineNumber)
            {
                e.Appearance.TextOptions.HAlignment = DevExpress.Utils.HorzAlignment.Far;
                if (e.Info.IsRowIndicator)
                {
                    if (e.RowHandle >= 0)
                    {
                        e.Info.DisplayText = (e.RowHandle + 1).ToString();
                    }
                }
            }
        }

 

以上虽然是使用了我的DevExpress分页控件,不过分页控件的内部就是使用了DevExpress的GridControl控件的。

 4、常用布局控件。

传统的数据编辑界面,我们一般需要添加一个Label,然后再加一个TextBox或者其他控件,而DevExpress在这方面确实下了不少功夫,引入了一个LayoutControl的控件,该控件可以在你添加一个TextBox等其他控件的时候,自动为你加入一个类似Label的控件,而且布局已经给你设计对齐好,添加几个可以在一行中放置多列控件,对齐效果也非常好,如果是重新设计界面,省却不少对齐以及维护Label的属性。

另外,该布局属性可以设置类似GroupBox的边界效果(默认不显示文本和边界),也可以统一设计在该布局控件内部各种控件的效果,如ReadOnly为True的显示如何,Enable为False的显示如何,只需要设置一个地方,就可以统一界面效果了。总之,用起来相当的不错。

 

 

 总体来讲,第一次使用DevExpress会觉得很多地方不太适应,甚至有时候找不到对应的属性,但是当慢慢熟悉了使用该控件来开发的时候,会觉得它确实在很多地方引入了较好的理念,习惯了就觉得效率提高了不少,界面设计上也会觉得更加美观和方便了。由于我只是在我平常开发的小例子,以及我的Winform开发框架中,应用了DevExpress控件的各种常用效果,应该还有很多常用的控件以及高级控件没有用到,以后有继续使用的话,会继续记录相应的经验心得供大家探讨。

最后附上一个我应用DevExpress控件改进过Winform开发框架的界面效果图,里面应用到了Ribbon界面效果以及基于DevExpress控件的分页控件(前面有介绍过使用例子),使用了分页控件,对整个GridView的处理上,会方便很多,界面效果如下所示。

 

本文转自博客园伍华聪的博客,原文链接:DevExpress控件使用经验总结,如需转载请自行联系原博主。


 

时间: 2024-09-22 15:47:05

DevExpress控件使用经验总结的相关文章

DevExpress控件使用之RichEditControl的使用

原文:DevExpress控件使用之RichEditControl的使用 做Winform的,我们一般都知道,传统.NET界面有一个RichTextBox控件,这个是一个富文本控件,可以存储图片文字等内容,它有自己的文件格式RTF,在DevExpress控件组里面也有一个同等的控件,他的名字是RichEditControl,这个控件功能很强大,在我上一篇随笔<Winform开发框架之通用短信邮件通知模块>中,有介绍过利用它来做邮件编辑器,实现图文并茂的邮件的功能,如下所示.本文主要介绍如何一步

DevExpress控件开发常用要点(项目总结版)

使用DevExpress控件来做项目开发已经有很长一段时间了,在摸索开发到客户苛刻要求的过程中,其中碰到过很多问题需要解决的,随着一个个问题的解决,也留下很多对DevExpress控件的使用经验及教训,综合设计到的多个项目的问题,对这些开发常用的要点进行总结,方便别人也方便自己.提供这些解决方法,一个可以快速应用到项目中,二个也可以作为对界面开发的更高要求对待自己的项目,使得自己的东西更加完美,更加受欢迎.  1. GridControl控件的数据显示的样式控制 如上两图所示,我们有时候需要控制

DevExpress控件汉化详解(WebForm)

所有Developer Express .NET产品都有本地化资源,比如按钮属性,控件属性描述,菜单项,确认和错误的信息等等,所有这些资源字符串可以很容易地被翻译成各种语言. 先看下面汉化前后的图片: 汉化前 汉化后 如何实现上述的汉化呢?Dev汉化总结下来一般分三种形式:一种是利用已经汉化好的资源包:一种是使用本地对象类,利用代码汉化:还有就是资源包和代码结合.下面我们就这三种情况的实现方法和各自的利弊做一详细的讲解. 一.利用资源包汉化 一.如何使用资源包进行汉化 首先,您需下载现有的资源包

asp.net-c#,webform项目,使用devexpress控件,使用aspxgridview进行数据的显示

问题描述 c#,webform项目,使用devexpress控件,使用aspxgridview进行数据的显示 对aspxgridview进行group,我现在知道了其中一行的行号,怎么一下打开该行下的所有的分组节点 解决方案 http://www.lmwlove.com/ae/ID80 解决方案二: DevExpress控件的使用DevExpress控件使用

DevExpress控件RichEditControl怎么添加服务?

问题描述 DevExpress控件RichEditControl怎么添加服务?richeditcontrol.addservices() 解决方案 解决方案二:看官网https://documentation.devexpress.com/#WindowsForms/CustomDocument113758解决方案三:引用1楼ajianchina的回复: 看官网https://documentation.devexpress.com/#WindowsForms/CustomDocument113

ev xpress-C#使用DevExpress 控件画等高线

问题描述 C#使用DevExpress 控件画等高线 DevExpress 画等高线怎么画等高线呢,用什么控件呢,求大神解答... 解决方案 http://www.pudn.com/downloads618/sourcecode/windows/csharp/detail2515145.htmlhttp://www.cnblogs.com/Leo_wl/archive/2010/11/02/1867296.html 这个你研究研究吧 解决方案二: 什么都不用,就在form上自己绘制,关键不是用什

DevExpress控件中LayoutControl的使用

原文:DevExpress控件中LayoutControl的使用 C#开发中,软件布局设计,主要用TableLayoutPanel能很好地支持缩放功能,对自身的Label.TextBox等控件支持的很好,是通过这些控件的Anchor属性设为:Top, Bottom, Left, Right.TextAlign属性设为:MiddleCenter来实现缩放和定位的.       但是VS中自身的控件,样式比较简单和单调.而DEV控件在美观样式设置上更盛一筹.更多的属性支持势必导致DEV控件的使用的复

DevExpress 控件使用-不求精-不求顶-不求名-只求对您能有丝帮助

问题描述 虽然不是一名职业开发人员,但也开发过一些项目.每次项目工期都非常紧张,而且都或多或少地需要一些没有学习过的技术,大家都知道一涉及到新技术就会遇到很多问题,有时对于过来人来说一些不是问题的问题,在新手面前很可能是一个拦路虎,进而影响项目进度耽误工期,解决方案很简单,就是打开百度或者google查资料,看看别人是不是也遇到过类似的问题,怎么解决的,什么解决方案.干过这么多项目,真心说得益于互联网的便利,得益于大家的分享!如果没有网络,没有那么多技术大Boss在网上的热心解答,无私的技术支持

对DevExpress控件中的TreeList控件表格操作问题

问题描述 请高手指教:我用的是第三方DevExpress控件中的TreeList控件,通过工具栏按钮对表格数据进行增删改操作,问题是:当我增加.修改当前行表格时,用什么方法可以知道当前行的光标离开了当前行,并作出提示信息,找了好久没有实现,请C#高手们指点迷津,先谢谢了. 解决方案 解决方案二:TreeList1_FocusedNodeChanged中用e.Node.Id判断解决方案三:To51Crack:您好,能给个具体的实例吗?贴出代码来,小弟是新手刚用C#,谢谢了