系統城裝機大師 - 唯一官網:www.farandoo.com!

當前位置:首頁 > 系統教程 > Linux教程 > 詳細頁面

DevExpress的WidgetView的使用介紹

時間:2020-09-03來源:www.farandoo.com作者:電腦系統城

很多程序可能都會有一個首頁綜合展示系統的相關信息,如匯總信息,圖表統計、待辦業務、提醒信息等內容,在Web上可能叫做Dashboard儀表板,或者首頁頁面,不管哪種叫法,都是綜合展示一些信息,提供一些信息展示或者處理工作的入口,我們在Winform里面,有時候也需要這樣的儀表板首頁,這個使用DevExpress的控件組的話,可以使用WidgetView控件來實現。

1、DevExpress默認案例

DevExpress的Demo樣例提供了一些WidgetView的樣式,如下所示。

 

 

通過上面的案例,我們可以看到,利用WidgetView可以創建很豐富的匯總、報表、待辦等相關內容,只要處理得當,可以為我們的Dashboard首頁提供很豐富的綜合內容展示。

 

2、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的各種相關內容的介紹,以及介紹在設計模式下、代碼動態構建兩種方式下的處理方式,希望對你了解這個特殊的控件有所幫助。

分享到:

相關信息

  • 電腦系統城教小白linux操作系統安裝步驟詳細

    很多網友對于linux系統比較陌生,更別說linux系統安裝了。有使用筆記本電腦的網友需要用到linux系統,不過卻不知道怎么安裝,所以下面小編要來跟大家說說linux操作系統安裝步驟詳細,大家一起來看看吧。...

    2022-03-07

  • 紅旗Red Flag安裝全程圖解 RedFlag紅旗Linux系統怎么安裝?

    RedFlag紅旗Linux系統怎么安裝?電腦想要安裝雙系統,該怎么安裝RedFlag紅旗系統呢?下面我們就來看看紅旗Red Flag安裝全程圖解,詳細請看下文介紹...

    2022-01-23

系統教程欄目

欄目熱門教程

人氣教程排行

站長推薦

熱門系統下載

jlzzjlzz亚洲乱熟在线播放