Dev控件使用之导航控件NavBarControl

控件用途

Navbarcontrol功能很强大,dev 目前也是winform/wpf/asp .new mvc 非常火的控件集,本文主要介绍导航控件的用法,多用于菜单导航,官方给出demo 如下,今天我们主要讲winform的使用;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

控件使用

首先看下navbar 有哪些属性,这些都是布局属性,比如PaintStyleKind 可以选择不同的外观展示风格,也可以设定显示图标,
在这里插入图片描述
增加显示菜单,效果如下
在这里插入图片描述在这里插入图片描述
但是navbar 只能显示两层菜单,这是官方给出的说法,如果想要显示多级菜单,我们还需要配合TreeList 使用,需要自己写代码进行实现,这里我们将做一个演示,最后会给出最终效果图;
首先我们要找出顶级菜单,来建立navbar 所需要的navbargroup,代码如下

//查询顶级菜单
var ltTop = ltMenu.FindAll(x => string.IsNullOrWhiteSpace(x.ParentNo)).OrderBy(x => x.SEQNO).ToList();
//循环建立navgroup
for (int i = 0; i < ltTop.Count; i++)
            {
                NavBarGroupControlContainer container = new NavBarGroupControlContainer();

                nbcMenu.Controls.Add(container);

                //添加Group
                NavBarGroup group = new NavBarGroup();
                group.Name = ltTop[i].FuncId;
                //功能名称
                group.Caption = ltTop[i].FuncName;
                group.ControlContainer = container;
                //是否展开
                group.Expanded = true;
                group.GroupClientHeight = 300;
                group.AppearanceBackground.BackColor = Color.White;
                group.AppearanceBackground.BackColor2 = Color.White;
                group.Appearance.BackColor = Color.White;
                group.Appearance.BackColor2 = Color.White;
                group.ImageOptions.LargeImage = image;
                 group.ImageOptions.SmallImage = image;
                 //
 
}

至此我们navbargroup 添加完成,但是我们多层级的还未建立,还需要在循环里添加Treelist 菜单,代码如下

var tl = GetTreeList();

                var ltChildMenu = FindNodeAllMenu(ltMenu, ltTop[i].FuncId);//ltMenu.FindAll(x => x.ParentNo == ltTop[i].FuncId).OrderBy(x => x.SEQNO).ToList();
                tl.DataSource = ltChildMenu;
                tl.ParentFieldName = "ParentNo";
                tl.KeyFieldName = "FuncId";
                tl.RefreshDataSource();
                container.Controls.Add(tl);

                nbcMenu.Groups.Add(group);

TreeList 获取方法

private TreeList GetTreeList() 
      {
          TreeList tl = new TreeList();
          tl.Appearance.FocusedCell.BackColor = System.Drawing.Color.LightCyan;
          tl.Appearance.FocusedCell.BackColor2 = System.Drawing.Color.LightCyan;
          tl.Appearance.FocusedCell.Options.UseBackColor = true;
          tl.Appearance.FocusedRow.BackColor = System.Drawing.Color.LightCyan;
          tl.Appearance.FocusedRow.BackColor2 = System.Drawing.Color.LightCyan;
          tl.Appearance.FocusedRow.Options.UseBackColor = true;
          tl.Appearance.Row.Font = new System.Drawing.Font("微软雅黑", 9.5F);
          tl.Appearance.Row.Options.UseFont = true;
          //新增栏位
          var tlColumn = new TreeListColumn();
          tlColumn.Caption = "treeListColumn1";
          tlColumn.FieldName = "FuncName";
          tlColumn.MinWidth = 28;
          tlColumn.Name = "treeListColumn2";
          tlColumn.OptionsColumn.AllowEdit = false;
          tlColumn.Visible = true;
          tlColumn.VisibleIndex = 0;
          tlColumn.Width = 104;
          tl.Columns.AddRange(new DevExpress.XtraTreeList.Columns.TreeListColumn[] {
          tlColumn});
          tl.Dock = System.Windows.Forms.DockStyle.Fill;
          tl.Location = new System.Drawing.Point(0, 0);
          tl.MinWidth = 18;
          tl.Name = "tlSubMenuList";
          tl.OptionsMenu.ShowExpandCollapseItems = false;
          tl.OptionsView.FocusRectStyle = DevExpress.XtraTreeList.DrawFocusRectStyle.RowFullFocus;
          tl.OptionsView.ShowColumns = false;
          tl.OptionsView.TreeLineStyle = DevExpress.XtraTreeList.LineStyle.Dark;
          tl.SelectImageList = this.imageCollection1;
          tl.Size = new System.Drawing.Size(314, 78);
          tl.TabIndex = 7;
          tl.TreeLevelWidth = 16;
          //注册事件
          tl.CustomDrawNodeImages += Tl_CustomDrawNodeImages;//注册绘制图片
          tl.DoubleClick += Tl_DoubleClick;//双击菜单
          tl.MouseUp += Tl_MouseUp;//
          return tl;
      }

至此使用navbar 创建完成,其中treelist 的双击菜单事件需要大家各自完成,最终实现的效果图如下
在这里插入图片描述

NavBarControl控件C#中的一个导航控件,它通常用于创建具有多个导航选项卡的用户界面。NavBarControl提供了一种方便的方式来组织和导航应用程序中的不同功能模块或视图。 使用NavBarControl控件,您可以创建一个导航栏,其中包含多个导航组。每个导航组可以包含多个导航项,每个导航项都表示一个不同的功能或视图。用户可以通过点击导航项来切换到特定的功能或视图。 NavBarControl控件提供了一些常见的功能,如自动折叠和展开导航组、显示图标和文本、支持多级导航等。您可以通过代码或设计时属性设置来配置控件的外观和行为。 以下是一个简单的示例代码,用于创建一个包含两个导航组和若干导航项的NavBarControl控件: ```csharp using DevExpress.XtraNavBar; // 创建一个NavBarControl实例 NavBarControl navBarControl = new NavBarControl(); navBarControl.Dock = DockStyle.Left; // 创建两个导航NavBarGroup group1 = new NavBarGroup("Group 1"); NavBarGroup group2 = new NavBarGroup("Group 2"); // 创建几个导航项并添加到导航组中 NavBarItem item1 = new NavBarItem("Item 1"); NavBarItem item2 = new NavBarItem("Item 2"); NavBarItem item3 = new NavBarItem("Item 3"); group1.ItemLinks.Add(item1); group1.ItemLinks.Add(item2); group2.ItemLinks.Add(item3); // 将导航组添加到NavBarControlnavBarControl.Groups.Add(group1); navBarControl.Groups.Add(group2); // 将NavBarControl添加到窗体中 this.Controls.Add(navBarControl); ``` 通过上述示例,您可以创建一个简单的导航栏,并根据您的需要添加更多的导航组和导航项。希望这能帮助到您!如果有任何进一步的问题,请随时提问。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值