WinForm界面开发教程:DevExpress WidgetView使用介绍
DevExpress技术交流群2:775869749 欢迎一起进群讨论
DevExpress v20.1完整版下载
DevExpress Winforms Controls 内置140多个UI控件和库,完美构建流畅、美观且易于使用的应用程序。DevExpress WinForm v20.1全新发布.
很多程序可能都会有一个首页综合展示系统的相关信息,如汇总信息,图表统计、待办业务、提醒信息等内容,在Web上可能叫做Dashboard仪表板,或者首页页面,不管哪种叫法,都是综合展示一些信息,提供一些信息展示或者处理工作的入口,我们在Winform里面,有时候也需要这样的仪表板首页,这个使用DevExpress的控件组的话,可以使用WidgetView控件来实现。
一、DevExpress默认案例
DevExpress的Demo样例提供了一些WidgetView的样式,如下所示。
通过上面的案例,我们可以看到,利用WidgetView可以创建很丰富的汇总、报表、待办等相关内容,只要处理得当,可以为我们的Dashboard首页提供很丰富的综合内容展示。
二、WidgetView的使用介绍
WidgetView的使用,如果要较好掌握它的使用,需要了解DocumentManager、WidgetView、Document、StackGroup的概念是什么,以及它们之间的关系。
我们可以通过窗体的设计器来创建一个DocumentManager,其中DocumentManager里面包含一个WidgetView,用来做视图管理的;然后在设计模式上创建多个对应的Document,而Document是用来管理对应展示的内容的(如自定义用户控件),StackGroup等是用来管理Document布局展示的,除了StackLayout外,可以通过WidgetView的LayoutMode属性设置其他布局类型,如Table Layout, Flow Layout 以及 Free Layout等。如下是在设计模式下创建几个空白的Document以及使用的LayoutMode 为StackLayout来排版Document的排列方式。
如果需要在设计模式下维护WidgetView的一些内容,可以通过窗体下面的DocumentManager对象进行维护。
以上的Demo就是简单的创建几个空白的Document以及常规的StackLayout的方式排版,运行得到界面效果如下所示。
一般实际情况下,我们是在首页上综合展示各种报表内容、图表内容、待办信息等内容的,那么各个模块的内容,可以使用自定义用户控件来处理,然后综合展示即可,实际情况下,首先我们先创建用户控件界面,以及实现好各个内容的展示;然后我们可以在设计模式下指定不同Document下容纳的控件信息,也可通过动态创建的方式创建所需要的内容。
以下是我使用代码动态构建的WidgetView界面,通过动态创建DocumentManager、Document,以及加载各种自定义用户控件,组合成下面的界面效果。
用户自定义控件界面,我们在Controls里面放置各种不同内容的用户控件,如下界面方案中的项目文件界面所示。
动态创建WidgetView相关的内容比较简单,我这里把所有相关的代码一并贴出,方便了解。
/// <summary> /// 动态构建的Widget View /// </summary> public partial class FrmWidget2 : DevExpress.XtraEditors.XtraForm { public FrmWidget2() { InitializeComponent(); }private void FrmWidget2_Load(object sender, EventArgs e) { AddDocumentManager(); }WidgetView view; StackGroup group1, group2; void AddDocumentManager() { var docMananger = new DocumentManager(components); view = new WidgetView(); docMananger.View = view; docMananger.ContainerControl = this;view.AllowDocumentStateChangeAnimation = DevExpress.Utils.DefaultBoolean.True; group1 = new StackGroup(); group2 = new StackGroup(); group1.Length.UnitType = LengthUnitType.Star; group1.Length.UnitValue = 2; view.StackGroups.AddRange(new StackGroup[] { group1, group2 });//添加文档 AddDocuments();//设置布局显示 view.LayoutMode = LayoutMode.StackLayout; view.DocumentSpacing = 3;//tableLayout的行列定义 //构建每个文档所属的ColumnIndex和RowIndex this.view.Rows.Clear(); this.view.Columns.Clear(); List<Point> points = new List<Point>(); for (int i = 0; i < 3; i++) { this.view.Rows.Add(new RowDefinition() { }); for (int j = 0; j < 2; j++) { this.view.Columns.Add( new ColumnDefinition()); points.Add(new Point(i, j)); } } Random random = new Random(); foreach (Document document in view.Documents) { Point newLocation = points[random.Next(points.Count)]; document.RowIndex = newLocation.Y; document.ColumnIndex = newLocation.X; points.Remove(newLocation); }//添加 Document对象到group1不是必须的,因为所有新创建的文档都是默认放置到第一个StackGroup中. //group1.Items.AddRange(new Document[] { view.Documents[0] as Document, view.Documents[1] as Document }); view.Controller.Dock(view.Documents[view.Documents.Count - 3] as Document, group2); view.Controller.Dock(view.Documents[view.Documents.Count - 2] as Document, group2); view.Controller.Dock(view.Documents[view.Documents.Count - 1] as Document, group2); }/// <summary> /// 动态添加用户控件作为Widget视图的文档内容 /// </summary> void AddDocuments() { CreateDocument(typeof(Calendar), "日历控件", Color.Blue); CreateDocument(typeof(ToDoList), "待办列表4", Color.Yellow); CreateDocument(typeof(News), "消息信息", Color.Navy); CreateDocument(typeof(TodoControl), "待办控件", Color.Red); CreateDocument(typeof(MyDateControl), "日期控件", Color.Green); CreateDocument(typeof(Mail), "邮箱信息", Color.Purple); } /// <summary> /// 创建指定的文档 /// </summary> /// <param name="controlType">文档用户控件对象类型</param> /// <param name="caption">标题</param> /// <param name="backColor">背景色</param> void CreateDocument(Type controlType, string caption, Color backColor) { //创建用户控件 var control = Activator.CreateInstance(controlType) as Control;//创建指定的文档 var document = view.AddDocument(control) as Document; document.Caption = caption; //背景色 document.AppearanceCaption.BackColor = backColor; } }
以上就是DevExpress的WidgetView的各种相关内容的介绍,以及介绍在设计模式下、代码动态构建两种方式下的处理方式,希望对你了解这个特殊的控件有所帮助。
本文转载自博客园-伍华聪
获取第一手DevExpress咨询,尽在DevExpress中文网!
WinForm界面开发教程:DevExpress WidgetView使用介绍相关推荐
- android的webView的教程,Android WebView 应用界面开发教程
WebView组件本身就是一个浏览器实现,Android5.0增强的WebView基于Chromium M37,直接支持WebRTC.WebAudio.WebGL.开发者可以直接在WebView中使用 ...
- WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
控件下载地址(开源) http://sourceforge.net/projects/dockpanelsuite/ 原文:http://www.cnblogs.com/wuhuacong/archi ...
- 分享-WinForm界面开发之布局控件WeifenLuo.WinFormsUI.Docking的使用
分享自伍华聪的-WinForm界面开发之布局控件"WeifenLuo.WinFormsUI.Docking"的使用 本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的 ...
- python图形化界面教程_python图形化界面开发教程
python图形化界面开发教程内容摘要 python图形化界面开发教程白萝卜:泰兴电工教程,白了点,白兰地是在红葡萄酒的基础.基金从业资格教程学校,白开水.苜蓿干草.提摩西干草.兔粮方法:白居易< ...
- 《C# WinForM 实践开发教程》案例×××(2)
<C# WinForM 实践开发教程>案例×××(2): 由于上传限制,必须分卷压缩,请依次下载后解压缩.共有20个文件,合计71.3M. 请耐心下载哦^o^ 转载于:https://bl ...
- 鸿蒙系统,鸿蒙app简易登录界面,界面开发教程
鸿蒙系统,鸿蒙app简易登录界面,界面开发教程. // 这个是主Ability public class MainAbilitySlice extends AbilitySlice {@Overrid ...
- WinForm框架开发教程 - 窗体基类的用户身份信息的缓存和提取
在WinForm开发中,有时候为了方便,需要把窗体的一些常规性的数据和操作函数进行封装,通过自定义基类窗体的方式,可以实现这些封装管理,让我们的框架统一化.简单化的处理一些常规性的操作,如这里介绍的用 ...
- WinForm界面开发之布局控件“WeifenLuo.WinFormsUI.Docking“的使用
本篇介绍Winform程序开发中的布局界面的设计,介绍如何在我的共享软件中使用布局控件"WeifenLuo.WinFormsUI.Docking". 布局控件"Weife ...
- 《『若水新闻』客户端开发教程》——01.课程介绍
内容介绍 2011年,若水工作室制作了<Android开发从零开始>系列课程,感谢大家的鼓励和支持.为了进一步提高Android开发培训水平,2012年若水工作室又倾心制作的项目实战视频『 ...
- Python图形界面开发教程-课程笔记-2022-2-14
目录 1.1 写一个弹窗 1.2了解模板代码的组成 1.3 根据模板代码写一个界面 1.4 窗口关闭事件 1.5 通过字典获取返回值values 1.6 自定义主题 1.7 自定义窗口 1.8 布局和 ...
最新文章
- 祝贺黑龙江馆正式入驻波特城暨龙商龙企龙品走向全球化启动仪式圆满成功
- highcharts使用教程
- 2013年最 “酷”科技产品回顾
- C++顺序容器之deque初探
- Extjs4中up()和down()的用法以及组件查找_ComponentQuery类
- 再次详解clientHeight、offsetHeight、scrollHeight
- PyTorch 1.0 中文文档:torchvision.transforms
- iphone以旧换新活动_一年当中什么时候买手机最便宜?|手机|优惠券|购物节|苹果手机|iphone...
- 阶段3 3.SpringMVC·_04.SpringMVC返回值类型及响应数据类型_6 响应json数据之过滤静态资源...
- 使用RMAN恢复目录(catalog)解析
- GoLang 插件化开发
- iar arm 6.4 破解
- js根据银行卡号进行判断属于哪个银行并返回银行卡类型
- 扒一扒使用boostrap-fileinput上传插件遇到的坑,Bootstrap-fileinput上传插件的使用详解
- 计算机不能再U盘新建文件夹,如何让你的U盘永不中毒?新建一个文件夹就搞定!-u盘文件夹变成exe...
- echarts:基于上一篇我来给大家讲讲 如果你设置了自动播放但是鼠标放上去不生效 停留时间很短 应该怎么做呢???
- 【 已解决 】iPhone 越狱后用爱思助手刷机出现 NORdata,无法刷机
- 数据结构与算法(educoder作业)
- 【知识分享】异步串行收发器Uart(串口)-通信协议详解
- 计算机CMOS设置详解