最近刚接触到 DevExpress 13.1 这个皮肤组件, 觉得相当好用 于是开始准备搭建 个小应用的主体框架. 找了好久的就是没找到对应的文章来讲解这一块.. 翻了他们主网站上人家问的,以及API 才摸索... 不懂英文好吃力呀~~~ 首先选到的就是,依旧用 Mdi子窗体模式加载子模块 第一步: 创建一个主 RibbonForm 为: ParentForm 1.1 设置 RibbonControl 属性 MdiMergeStyle 为: Always 第二步: 在左边拖入一个NavBarControl 设置Dock : Left 第三步: 拖入: XtraTabbedMdiManager 3.1 设置 XtraTabbedMdiManager 的 MdiParent 为: 当前窗体:ParentForm 第四步: 新建子 RibbonForm 为: ChildForm 第五步: 在ChildForm中拖入: XtraScrollableControl 并设置 Dock:Fill 然后你可以把你的组件都拖入这个控件,这样就会在 ChildForm 被 加载的话会有 滚动条 第六步: 在 ChildForm 的 RibbonControl 中添加对就应的 RibbonPage 和 按钮 好了,至此,基本控件我们都已经添加好了.,接下来我们来添加事件 第七步: 打开子窗体事件 在ParentForm的 navbarControl 中添加 Item 并添加事件 // 给 NavBarControl 添加 LinkClicked 事件 第八步: 添加双击页签时,关闭页签事件,记住 是添加在: XtraTabbedMdiManager 的 MouseDown 事件中: private DateTime m_LastClick = System.DateTime.Now; private XtraMdiTabPage m_lastPage = null; private void xtraTabbedMdiManager1_MouseDown(object sender, MouseEventArgs e) { XtraMdiTabPage curPage = (sender as XtraTabbedMdiManager).SelectedPage; if (e.Button == MouseButtons.Left) { DateTime dt = DateTime.Now; TimeSpan span = dt.Subtract(m_LastClick); if (span.TotalMilliseconds < 300) //如果两次点击的时间间隔小于300毫秒,则认为是双击 { if (this.MdiChildren.Length > 1) { // 限制只有在同一个页签上双击才能关闭.(规避两个页签切换时点太快导致意外关闭页签) if (curPage.Equals(m_lastPage)) { //if (this.ActiveMdiChild != m_MapForm) //{ this.ActiveMdiChild.Close(); //} } } m_LastClick = dt.AddMinutes(-1); } else { m_LastClick = dt; m_lastPage = curPage; } } } 第九步: 添加合并Mdi子窗体的 状态栏 ,记得是在ParentForm的 RibbonControl控的 Merge事件和 UnMerge 事件中添加 这样就能在切换子窗体页签的时候同时将子窗体的状态栏也合并到主窗体的状态栏上,并且在切换另一个的时候同时卸载当前子窗体的合并状态栏, private void ribbon_Merge(object sender, DevExpress.XtraBars.Ribbon.RibbonMergeEventArgs e) { RibbonControl parentRRibbon = sender as RibbonControl; RibbonControl childRibbon = e.MergedChild; parentRRibbon.StatusBar.MergeStatusBar(childRibbon.StatusBar); } private void ribbon_UnMerge(object sender, RibbonMergeEventArgs e) { RibbonControl parentRRibbon = sender as RibbonControl; parentRRibbon.StatusBar.UnMergeStatusBar(); } OK 基本至此,小应用框架就能搭建出来了,后期还需要再添加控制,已经加载的子窗体不能重复添加的功能. 以及 NavBarControl 的 过滤功能. |
|
来自: 北方的白桦林 > 《DevExpress》