DevExpress XtraNavBar结合WeifenLuo.WinFormsUI.Docking布局

来源:互联网 发布:mac mini 更新 编辑:程序博客网 时间:2024/05/29 15:06

在WinFrom项目中需要实现左边导航,右边动态显示Tab页面的效果,经过几天的研究,结合DevExpress和WeifenLuo.WinFormsUI.Docking完成了大概的效果

 

首先,安装DevExpress,下载WeifenLuo.WinFormsUI.Docking,工具栏内添加WeifenLuo.WinFormsUI.Docking.dll 显示DockPanel插件

 

新建一个DevExpress Ribbon Form的窗体,设置IsMdiContainer为True(主窗体)左侧拖放一个NavBarControl,设置Dock属性为Left

一般来讲,我们希望左侧导航使用TreeView,选中NavBarControl,右键Run Designer添加一个NavBar Group

但是默认 NavBarGroup是不允许拖拽控件上去的,所以要修改NavBarGroup 的GroupStyle属性为ControlContainer

这个时候 就可以拖放TreeView上去了,设置TreeView的Dock属性为Fill,使之填充NavBarGroup

接下来就是绑定TreeView的节点上去 为了使左侧更美观点,我这里设置NavBarControl的SkinNav:DevExpress Style属性为SkinNav:DevExpress Style,效果如图:

 

接下来做右侧界面,往主窗体拖拽一个DockPanel控件(注意,不是DevExpress),设置Dock属性为Fill同样填充整个窗体,放心,不会把左侧的导航覆盖掉的

 

新建一个类BaseForm,该类继承DockContent

public  class BaseForm:DockContent    {    }


以后新建的子窗体继承BaseForm就可以了

 

新建一个子窗体,窗体继承BaseForm,在主窗体中实例化子窗体,并绑定到TreeView的节点点击事件中,显示子窗体

if (af[i] == null || af[i].IsDisposed)                        {                            af[i] = new ApcForm();                        }                        af[i].Text = e.Node.Text;                        af[i].Show(this.dockPanelMain);


因为我使用的是同一个窗体显示不同的信息,所以弄了一个数组,可以无视。效果如图:

 

至于为什么要在显示的时候加判断窗体资源是否被释放,因为在点击开一个窗体以后再关闭,再次点开的时候,编译器会提示你这个窗体资源已经被释放,报错。所以加了一个判断

 

 

 

0 0
原创粉丝点击