zoukankan      html  css  js  c++  java
  • DevExpress的NavBarControl组件中NavBarGroup如何触发展开或者折叠事件

    NavBarControl--NavBarGroup--NavBarItem

    NavBarControl控件虽然很好用,但是有一点很讨厌,就是NavBarGroup没有公开出点击事件或者折叠事件,对我们的开发造成很多的不便...但是也不是没有办法解决!

    我们都知道NavBarGroup的折叠是由Expanded属性控制的,那么这就好办啦.

    转到NavBarGroup的定义Expanded属性: 

    public virtual bool Expanded { get; set; }  //正好是一个virtual属性,那么我们就可以重写这个属性达到我们的目的  

    代码:

    using System;
    using System.Collections.Generic;
    using System.ComponentModel;
    using System.Diagnostics;
    using System.Linq;
    using System.Text;
    using DevExpress.XtraNavBar;
    
    namespace WMS.Ctrl
    {
        public partial class MyNavBarGroup : NavBarGroup
        {
            public MyNavBarGroup()
                : base()
            {
            }
    
            public MyNavBarGroup(string caption)
                : base(caption)
            {
            }
    
            //重写展开折叠属性,在set中触发自己定义的事件  
            private bool _Expanded = false;
            /// <summary>  
            /// 展开折叠属性  
            /// </summary>  
            public override bool Expanded
            {
                get
                {
                    return _Expanded;
                }
                set
                {
                    //触发改变之前的事件  
                    CancelEventArgs args = new CancelEventArgs() { Cancel = false };
                    OnExpandChanging(args);
    
                    //是否可以展开,是否取消,是否与上次一值想等  
                    if (CanExpand && !args.Cancel && _Expanded != value)
                    {
                        base.Expanded = _Expanded = value;
                        //触发修改之后的事件  
                        OnExpandChanged(new ExpandedEventArgs(value));
                    }
                }
            }
    
            //自己加了一个属性,是否能够折叠或者展开,有的时候我们需要这个功能  
            private bool _CanExpand = true;
            /// <summary>  
            /// 是否能够展开折叠(为false时,则不能展开或者折叠)  
            /// </summary>  
            public virtual bool CanExpand
            {
                get { return _CanExpand; }
                set { _CanExpand = value; }
            }
    
            /// <summary>  
            /// 展开或者折叠之后  
            /// </summary>  
            public event EventHandler<ExpandedEventArgs> ExpandChanged;
            protected virtual void OnExpandChanged(ExpandedEventArgs e)
            {
                if (ExpandChanged != null)
                {
                    ExpandChanged(this, e);
                }
            }
    
            /// <summary>  
            /// 展开或者折叠之前  
            /// </summary>  
            public event EventHandler<CancelEventArgs> ExpandChanging;
            protected virtual void OnExpandChanging(CancelEventArgs e)
            {
                if (ExpandChanging != null)
                {
                    ExpandChanging(this, e);
                }
            }
        }
    
        public class ExpandedEventArgs : EventArgs
        {
            public ExpandedEventArgs()
            {
                Expanded = false;
            }
    
            public ExpandedEventArgs(bool expanded)
            {
                Expanded = expanded;
            }
    
            /// <summary>  
            /// 展开或者折叠  
            /// </summary>  
            public bool Expanded { get; set; }
    
        }
    }

         //调用      

    MyNavBarGroup m = new MyNavBarGroup("Test MyGroup");       
    
    m.ExpandChanged += new EventHandler<ExpandedEventArgs>(m_ExpandChanged);       
    
    m.ExpandChanging += new EventHandler<CancelEventArgs>(m_ExpandChanging);      
    
    navBarControl1.Groups.Add(m);
  • 相关阅读:
    .NetCore教程之 EFCore连接Mysql DBFirst模式
    .Net EF6+Mysql 环境搭建
    SQL实用
    前端文章分享
    mac怎样运行vue项目
    Cadence 操作技巧总结3:拼板技巧总结
    TCL语言控制Modelsim仿真 2
    TCL语言控制Modelsim仿真 1
    Cadence 操作技巧总结2:模块化布局
    Cadence 操作技巧总结1:测试点的生成1
  • 原文地址:https://www.cnblogs.com/Bike/p/3495456.html
Copyright © 2011-2022 走看看