• C# 自定义控件和自定义事件 Kevin


    今天在项目开发的过程中,因为好几个页面都要用到同一个分类控件,就想着把它做成一个自定义控件,然后随托随用。在网上找了些列子,自定义控件的写法不用多说,主要说一下,如何将控件的事件,封装到自己定义的控件的自定义事件里面。这里同时也当作对自定义事件的一个复习吧。

    首先控件是一个由TreeList控件组成的,后面由填充从数据查出来的数据信息。现在的问题是如何将TreeList的FocusedNodeChanged事件封装到自定义的事件

    RSFocusedNodeChanged中。

    首先定义事件的代理类

    public class RSFocusedNodeChangedHandlerArgs
        {
            /// <summary>
            /// 选中的节点
            /// </summary>
            public TreeListNode focusedNode { get; set; }
            public RSFocusedNodeChangedHandlerArgs(TreeListNode node)
            {
                this.focusedNode = node;
            }
        }
    

      然后,自定一个事件和处理事件的委托:

    /// <summary>
            /// 自定义focuseNode事件
            /// </summary>
            public event RSFocusedNodeChangedHandler RSFocusedNodeChanged;
    
             /// <summary>
            /// 自定义处理focuseNode事件的委托 
             /// </summary>
             /// <param name="sender"></param>
             /// <param name="e"></param>
            public delegate void RSFocusedNodeChangedHandler(Object sender, RSFocusedNodeChangedHandlerArgs e);
    

      然后定义之间的执行方法:

    /// <summary>
            /// 执行事件
            /// </summary>
            /// <param name="e"></param>
            public void OnRSFocusedNodeChangedHandler(RSFocusedNodeChangedHandlerArgs e)
            {
                if (RSFocusedNodeChanged != null)
                {
                    RSFocusedNodeChanged(this,e);
                }
            }
    

      最后,在TreeList的FocusedNodeChanged事件中触发我们自定义的事件:

    public void treeList1_FocusedNodeChanged(object sender, DevExpress.XtraTreeList.FocusedNodeChangedEventArgs e)
            {
               //触发自定义事件
                RSFocusedNodeChangedHandlerArgs er = new RSFocusedNodeChangedHandlerArgs(e.Node);
                OnRSFocusedNodeChangedHandler(er);
            }
    

      完成!!

  • 相关阅读:
    一个合格的员工或者管理者是怎样炼成的
    关于找不到库文件
    dell md3200i mdss (企业管理) 安装的那点事儿(2)
    dell md3200i mdss (企业管理) 安装的那点事儿
    From 202.97.60.193 icmp_seq=48 Time to live exceeded
    关于清除arp 缓存的那点事儿
    ping 或者ssh 发生connect: No buffer space available 错误
    考研打卡_Day047
    考研打卡_Day046
    考研打卡_Day045
  • 原文地址:https://www.cnblogs.com/kfx2007/p/2958613.html
Copyright © 2020-2023  润新知