時間:2020-09-03來源:www.farandoo.com作者:電腦系統城
很多程序可能都會有一個首頁綜合展示系統的相關信息,如匯總信息,圖表統計、待辦業務、提醒信息等內容,在Web上可能叫做Dashboard儀表板,或者首頁頁面,不管哪種叫法,都是綜合展示一些信息,提供一些信息展示或者處理工作的入口,我們在Winform里面,有時候也需要這樣的儀表板首頁,這個使用DevExpress的控件組的話,可以使用WidgetView控件來實現。
DevExpress的Demo樣例提供了一些WidgetView的樣式,如下所示。
通過上面的案例,我們可以看到,利用WidgetView可以創建很豐富的匯總、報表、待辦等相關內容,只要處理得當,可以為我們的Dashboard首頁提供很豐富的綜合內容展示。
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的各種相關內容的介紹,以及介紹在設計模式下、代碼動態構建兩種方式下的處理方式,希望對你了解這個特殊的控件有所幫助。
2022-04-13
蘋果系統安裝雙系統圖文教程 蘋果系統怎么裝雙系統 ?2022-04-13
遠程登錄Linux CentOS系統方法 怎么遠程登錄Linux CentOS系統?2022-03-21
CentOS7安裝MYSQL8.X的詳解教程很多網友對于linux系統比較陌生,更別說linux系統安裝了。有使用筆記本電腦的網友需要用到linux系統,不過卻不知道怎么安裝,所以下面小編要來跟大家說說linux操作系統安裝步驟詳細,大家一起來看看吧。...
2022-03-07
RedFlag紅旗Linux系統怎么安裝?電腦想要安裝雙系統,該怎么安裝RedFlag紅旗系統呢?下面我們就來看看紅旗Red Flag安裝全程圖解,詳細請看下文介紹...
2022-01-23