日志

dev NavBarControl控件

 来源    2018-01-10    623  

一、新建一个导航栏

拖入一个panel到窗口上做为导航栏的容器,然后再拖入一个NavBarControl到其上,点击NavBarControl控件的右上角三角箭头展开任务列表,选择PaintStyle模式为Navigationpane,也就是同时最大展开的分组数目为1。

二、手动为导航栏添加数据

点击控件右上角三角箭头展开任务列表,选择Run Designer打开设计界面。

设计界面的Main -> Groups/Items/Links为导航栏的分组及子项目编辑界面,我们进入此界面,在右侧的NavBar Groups窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的分组,在右侧的NavBar Items窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的子项目,选中每个分组或子项目可以在右侧的属性窗口快捷设置他的常用属性,添加好了多个分组和子项目时,需要将子项目指定到某一分组内,直接用鼠标拖动NavBar Items中的子项目到NavBar Groups中的该分组下。

我们创建好了多个分组和子项目后,直接点击运行,查看此时的效果。

三、捕获导航栏的基本事件

捕获导航栏子项目的鼠标点击事件LinkClicked:

[csharp] view plain copy
  1. public Form1()  
  2.         {  
  3.             InitializeComponent();  
  4.   
  5.             OtherInit();  
  6.         }  
  7.         /// <summary>  
  8.         /// 其他的初始化处理  
  9.         /// </summary>  
  10.         private void OtherInit()  
  11.         {  
  12.             navBarItem1.LinkClicked += Item_Click;  
  13.             navBarItem2.LinkClicked += Item_Click;  
  14.             navBarItem3.LinkClicked += Item_Click;  
  15.             navBarItem4.LinkClicked += Item_Click;  
  16.             navBarItem5.LinkClicked += Item_Click;  
  17.             navBarItem6.LinkClicked += Item_Click;  
  18.             navBarItem7.LinkClicked += Item_Click;  
  19.             navBarItem8.LinkClicked += Item_Click;  
  20.             navBarItem9.LinkClicked += Item_Click;  
  21.         }  
  22.         /// <summary>  
  23.         /// 导航栏子项目的点击事件  
  24.         /// </summary>  
  25.         private void Item_Click(object sender, NavBarLinkEventArgs e)  
  26.         {  
  27.             MessageBox.Show("点击了子项目:" + e.Link.Caption);  
  28.         }  



四、动态更改导航栏数据

只需要根据数据动态的创建分组和子项目,并将子项目添加到分组之下:

[csharp] view plain copy
  1. NavBarGroup nbGroup1 = new NavBarGroup();  
  2.             nbGroup1.Name = "nbGroup1";  
  3.             nbGroup1.Caption = "动态添加的分组";  
  4.             nbGroup1.SmallImageIndex = -1;  
  5.             nbGroup1.LargeImageIndex = -1;  
  6.             //添加到导航栏所有分组集合  
  7.             navBarControl1.Groups.Add(nbGroup1);  
  8.   
  9.   
  10.             NavBarItem nbItem1 = new NavBarItem();  
  11.             nbItem1.Name = "nbItem1";  
  12.             nbItem1.Caption = "动态添加的子项目";  
  13.             nbItem1.SmallImageIndex = -1;  
  14.             nbItem1.LargeImageIndex = -1;  
  15.             nbItem1.LinkClicked += Item_Click;  
  16.             //添加到导航栏所有子项目集合  
  17.             navBarControl1.Items.Add(nbItem1);  
  18.   
  19.   
  20.             //添加子项目至某一分组  
  21.             nbGroup1.ItemLinks.AddRange(new NavBarItemLink[] {  
  22.                 new NavBarItemLink(nbItem1)  
  23.             });  



点击左侧加载控件

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Linq;
using System.Threading.Tasks;
using System.Windows.Forms;
using DevExpress.XtraEditors;
using DevExpress.XtraTab;
using DevExpress.XtraTab.ViewInfo;

namespace Demo
{
    public partial class XtraForm : DevExpress.XtraBars.Ribbon.RibbonForm
    {
        public XtraForm()
        {
            InitializeComponent();
            ((IXtraTab)xtraTabControl1).ViewInfo.HeaderButtonClick += (s, e) =>
            {
                //关闭所有page
                if (e.Button == TabButtons.Close)
                    xtraTabControl1.TabPages.ToList().ForEach(x =>
                    {
                        x.Dispose();
                        x = null;
                    });
            };

            xtraTabControl1.CloseButtonClick += (s, e) =>
            {
                //关闭单个page
                var args = (ClosePageButtonEventArgs)e;
                var page = args.Page as XtraTabPage;
                if (page != null)
                {
                    page.Dispose();
                    page = null;
                }
                xtraTabControl1.SelectedTabPageIndex -= xtraTabControl1.TabPages.Count;
            };

            navBarControl1.LinkClicked += (s, e) =>
            {
                //创建page
                CreatePage(e.Link.Item.Caption, e.Link.Item.Tag);
            };
        }
        private void CreatePage(string caption, object tag)
        {
            if (string.IsNullOrWhiteSpace(caption) || tag == null || string.IsNullOrWhiteSpace(tag.ToString())) return;

            foreach (XtraTabPage pg in xtraTabControl1.TabPages)
            {
                if (pg.Text.Contains(caption.Trim()))
                {
                    xtraTabControl1.SelectedTabPage = pg;
                    return;
                }
            }
            var tabpage = new XtraTabPage() { Text = caption.Trim(), Padding = new Padding(5, 5, 5, 5) };

            try
            {
                var control = Activator.CreateInstance(Type.GetType(tag.ToString().Trim(), false, false)) as UserControl;

                if (control != null)
                {
                    control.Visible = true;
                    control.Dock = DockStyle.Fill;
                    tabpage.Controls.Add(control);

                    tabpage.PageVisible = true;
                    xtraTabControl1.TabPages.Add(tabpage);
                    xtraTabControl1.SelectedTabPage = tabpage;
                }
            }
            catch { throw; }
        }
        //void navBarControl_ActiveGroupChanged(object sender, DevExpress.XtraNavBar.NavBarGroupEventArgs e)
        //{
        //    navigationFrame.SelectedPageIndex = navBarControl1.Groups.IndexOf(e.Group);
        //}
        void barButtonNavigation_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            int barItemIndex = barSubItemNavigation.ItemLinks.IndexOf(e.Link);
            navBarControl1.ActiveGroup = navBarControl1.Groups[barItemIndex];
        }

        private void barButtonItem1_ItemClick(object sender, DevExpress.XtraBars.ItemClickEventArgs e)
        {
            //打开文件
            userControl11.UpLoadExcel();
        }
    }
}

2:在navBarItem1属性中

就可以把自定义控件加到tabcontrol里了.

相关文章
Winform 中DataGridView、dev Gridview控件添加行标题
日志有很多种方法.  1.可以在DataGridView控件中的RowStateChanged事件改变行标题单元格的值(Row.HeaderCell.Value) /// <summary> ...
1
c# – Dev Express布局控件选项卡顺序不按Visual Studio注明的Tab键顺序排列.怎么修?
问答我有一个使用devexpress布局控件的winform项目,我使用Visual Studio的Tab键顺序功能来设置布局控件中子控件的Tab键顺序.但是,在运行时,只有当我按Tab键时才会触发布局控 ...
1
Dev控件使用CheckedListBoxControl获取items.count为0 的解决方法
日志CheckedListBoxControl,我使用DataSource属性,给其绑定了一个List对象.界面显示都挺正常的,当若干个项的复选框被选中的后,它的checkedListBoxControl ...
应用DEV第三方界面控件制作批量添加水印程序
日志本次应用DevExpress和C#语言制作了一个批量添加水印的程序,看界面效果图: 界面中既可以进行文字水印添加,也可以图片水印添加,同时还可以对水印的位置进行设置,比较实用! 文字水印的具体添加情况 ...
1
c# dev控件 gridcontrol 数据跟随鼠标滚轮滚动也可以编辑
日志在绑定书到gridControl后经常发现: 如果你设置了 this.gridView3.OptionsBehavior.Editable = false; 那数据可以跟随滚轮滚动,但如果你要复制某个 ...
1
DEV中的TreeList控件应用的一个小效果实现——个人总结
日志我使用最多的DEV控件就是这个TreeList啦,当然用好它很不简单,如果用好它,能做出很精彩的树形层次结构图.TreeList控件很强大,以至于你看DEV自带的DEMO,也得浪费你很长时间应用.DE ...
1
DevExpress ASP.NET 使用经验谈(9)-Dev控件客户端事件 ClientSideEvents
日志上一节,已经介绍了ASPxGridView的自定义列和基本事件 ,本节接着将介绍Dev控件的客户端事件模型. 在上节示例基础上,我们增加一行菜单,使用Dev的ASPxMenu来实现,如下图所示.    ...
2
DEV 控件使用之:TreeList
日志使用DEV控件也有一段时间了,一直想写点东西.最近又使用到TreeList控件,这个控件对于刚使用的人来说确实不好掌握.我想把自己知道的写下来,让还不熟悉的慢慢学会使用,对于会使用的大家交流下.如果有 ...
DEV控件的Gridview1
日志DEV控件的Gridview小技巧总结 1.设置Gridview控件的某列不可编辑 this.gridData.gridView1.Columns["change_date"].O ...
DEV控件Grid显示行号
日志DEV控件Grid的显示行号需要通过一个事件来设置,具体设置代码为: private void gridView1_CustomDrawRowIndicator(object sender, DevE ...
1
DEV控件:gridControl常用属性设置
日志1.隐藏最上面的GroupPanel gridView1.OptionsView.ShowGroupPanel=false; 2.得到当前选定记录某字段的值 sValue=Table.Rows[gri ...
1
Dev之ChartControl控件(二)— 绘制多重坐标图形
日志有时针对一个ChartControl控件可能要设置多个Y轴,进行显示: 以下举个例子:如在一个Chart中显示多个指标项如图: 首先,读取数据,并对左边的Y轴最大和最小值进行设定 IndexSerie ...
1
Dev之ChartControl控件(一)
日志ChartControl控件主要包括Chart Title,Legend,Annotations,Diagram,Series五部分:如图: 1.  用RangeControl控件控制ChartCon ...
Dev控件用法 aspxTreeList 无刷新 aspxGridView 数据
日志主要是利用 ASPxTreeList 点击事件回发服务器进行数据重新绑定 ASPxTreeList: <SettingsBehavior ExpandCollapseAction="N ...
1
重写DEV的DateEdit控件的类只选择年月
日志最新在做CRM的报表,查询条件只需要年月,DateEdit 以及几个时间控件都用的不顺,强迫症犯了一怒之下起了重写DateEdit的想法 新建一个类 CXDateEdit  using DevExpr ...
Dev的GridControl控件选择框的使用
日志先介绍环境:VS2010,dev11.2 想要达到的效果:,当单击某一行时前面的选择框选中. 在网上找了不少,但是感觉跟我想的做法很不一样(有很多都是再另外添加一个什么CheckBox,这个我在Dev ...
dev设置子窗体的初始位置,grid控件表头的属性设置
日志当在父窗体上弹出子窗体时,一般设置子窗体的初始位置是居中, //在需要展示子窗体的父窗体上写这段,注意必须设置在show方法之前 Form2 f2 = new Form2(); f2.MdiParen ...
1
VS环境下,DEV插件的ComboBoxEdit控件最简单的数据源绑定和获取方法
日志使用 ComboBoxEdit 控件绑定key/value值: 因为 ComboBoxEdit 没有 DataSource 属性,所以不能直接绑定数据源,只能一项一项的添加. 首先创建一个类ListI ...
1
DEV控件的分页控件,实现勾选复选框
日志/// <summary> /// 单元格的点击事件 /// </summary> /// <param name="sender"></ ...