dev NavBarControl控件
一、新建一个导航栏
拖入一个panel到窗口上做为导航栏的容器,然后再拖入一个NavBarControl到其上,点击NavBarControl控件的右上角三角箭头展开任务列表,选择PaintStyle模式为Navigationpane,也就是同时最大展开的分组数目为1。
二、手动为导航栏添加数据
点击控件右上角三角箭头展开任务列表,选择Run Designer打开设计界面。
设计界面的Main -> Groups/Items/Links为导航栏的分组及子项目编辑界面,我们进入此界面,在右侧的NavBar Groups窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的分组,在右侧的NavBar Items窗口内点击鼠标焦点至此窗口时,上方的添加按钮可以添加新的子项目,选中每个分组或子项目可以在右侧的属性窗口快捷设置他的常用属性,添加好了多个分组和子项目时,需要将子项目指定到某一分组内,直接用鼠标拖动NavBar Items中的子项目到NavBar Groups中的该分组下。
我们创建好了多个分组和子项目后,直接点击运行,查看此时的效果。
三、捕获导航栏的基本事件
捕获导航栏子项目的鼠标点击事件LinkClicked:
- public Form1()
- {
- InitializeComponent();
- OtherInit();
- }
- /// <summary>
- /// 其他的初始化处理
- /// </summary>
- private void OtherInit()
- {
- navBarItem1.LinkClicked += Item_Click;
- navBarItem2.LinkClicked += Item_Click;
- navBarItem3.LinkClicked += Item_Click;
- navBarItem4.LinkClicked += Item_Click;
- navBarItem5.LinkClicked += Item_Click;
- navBarItem6.LinkClicked += Item_Click;
- navBarItem7.LinkClicked += Item_Click;
- navBarItem8.LinkClicked += Item_Click;
- navBarItem9.LinkClicked += Item_Click;
- }
- /// <summary>
- /// 导航栏子项目的点击事件
- /// </summary>
- private void Item_Click(object sender, NavBarLinkEventArgs e)
- {
- MessageBox.Show("点击了子项目:" + e.Link.Caption);
- }
四、动态更改导航栏数据
只需要根据数据动态的创建分组和子项目,并将子项目添加到分组之下:
- NavBarGroup nbGroup1 = new NavBarGroup();
- nbGroup1.Name = "nbGroup1";
- nbGroup1.Caption = "动态添加的分组";
- nbGroup1.SmallImageIndex = -1;
- nbGroup1.LargeImageIndex = -1;
- //添加到导航栏所有分组集合
- navBarControl1.Groups.Add(nbGroup1);
- NavBarItem nbItem1 = new NavBarItem();
- nbItem1.Name = "nbItem1";
- nbItem1.Caption = "动态添加的子项目";
- nbItem1.SmallImageIndex = -1;
- nbItem1.LargeImageIndex = -1;
- nbItem1.LinkClicked += Item_Click;
- //添加到导航栏所有子项目集合
- navBarControl1.Items.Add(nbItem1);
- //添加子项目至某一分组
- nbGroup1.ItemLinks.AddRange(new NavBarItemLink[] {
- new NavBarItemLink(nbItem1)
- });
点击左侧加载控件
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(, , , ) }; 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里了.
dev NavBarControl控件的更多相关文章
- Dev系列控件的AJAX (转)
介绍Dev系列控件在前台也就是客户端的一些常用方法介绍以及前后台异步通信的方法. 一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2 ...
- Winform DevExpress控件库(三) 使用NavBarControl控件定制导航栏
NavBarControl控件:主要作用是制作包含多个选项组并且每个组里包含多个子选项的导航栏: 位于 工具箱 -> Navigation & Layout(导航栏与布局类控件) 目录下 ...
- [DevExpress使用随笔]之NavBarControl控件(一)【转】
https://blog.csdn.net/HXC_HUANG/article/details/78614092 NavBarControl是具有可扩展组的侧导航控件.一.在Winform窗口中拖入N ...
- dev的控件放在没有runat="server"的标签中,回调出现的问题
dev的控件放在没有runat="server"的标签中,第一次回调是会刷新页面, 有runat="server"时不会刷新页面
- ASP.NET Dev ASPxGridView控件使用 ASP.NET水晶报表打印
1.ASPxGridView控件使用 2.ASP.NET水晶报表客户端打印 3.javascript打印 4.ASPxGridView根据Textbox查询 5. ASPxGridView 列宽 1. ...
- Dev系列控件的AJAX使用Demo
一.Dev Data Edit控件通用属性以及方法: 属性 1.GetEnabled():返回控件是否为可操作状态 2.GetText():返回控件的Text的值 3.SetEnabled():设置控 ...
- NavBarControl控件 2015-07-23 16:56 2人阅读 评论(0) 收藏
NavBarControl控件 1. 新建一个windows窗体应用程序项目 2. 在工具箱中的Navigation& Layout选项卡下找到NavBarControl, ...
- dev layoutControl 控件使用
对于排版控件,用微软的方法都是先拉 label再拉一个 Textbox , 虽然微软的控件了有类似于 EXCEL的单元格全并功能,但用起来使终不方便, 今天研究了一下 DEV 的这个控件,比微软的 ...
- DEV 第三方控件报表分类汇总
最近这段时间难得空闲,于是打算做个报表功能,主要实现数据的分类汇总,以便不时之需.首先看看效果: 主要是根据工程类型这个字段进行分类,每个分类下对应的项目金额进行求和,当然,你也可以根据实际需求,进行 ...
随机推荐
- python 装饰器的缺点以及解决方法
1.python装饰器的缺点 装饰器可以允许我们在不改变函数或犯方法的调用方式的情况下,添加额外的功能; 如下所示,我们要在中的方法之前增加装饰器check_is_admin,用来判断执行类的方法的用 ...
- 在使用 #import <objc/message.h>时 xcode 报 :Too many arguments to function call, expected 0 , have * 解决方法
选中项目 - Project - Build Settings -
- Android代码规范
Android代码规范——文章来源<IT蓝豹>http://itlanbao.com/preview.aspx#1,0 [-]一Import的次序二缩进Indentation总则示例代码规 ...
- js固定底部菜单
<!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...
- linux centos 访问根目录 not accessable
chmod 777 root 即可 或 chmod a+x root https://blog.csdn.net/CSDN_GYG/article/details/73276310
- react学习入门
先在在学习react,react是faceBook推出的框架,因为虚拟DOM使页面性能提高很大,特别react Native非常适合移动端,现做一个学习总结: 1.react 获取DOM的两种方式是R ...
- java正则验证
String regex ="[A-Z]{4}[0-9]{7}"; List<String> non= new ArrayList<String>(); f ...
- HTTPS加密过程分析
HTTPS加密的作目的是解决信息传输过程中数据被篡改,窃取 HTTPS使用了一系列的加密算法:对称加密算法.非对称加密算法.单向加密算法 非对称加密算法 分为公钥部分和私钥部分,用公钥加密的密文只能由 ...
- Java基础学习笔记(三)
18.2.1无参无返回值的方法 18.2.1.1定义方法的语法格式 public static void 方法名称(){ 方法体 } 方法调用 类名.方法名称(); 注意:在Java中,同一个类中的方 ...
- 【Spider】使用命令行启动时,能正常抓取,但是在pycharm直接运行不能保存数据
通过cmd 运行命令scrapy crawl [爬虫名称]可以正常运行,并把数据保存到json文件和下载爬取的图片 但是在项目的spiders目录下的 firstTestSpider.py文件里添加: ...