您的位置:首页 > 编程语言 > C#

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

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

首先控件是一个由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);
}


  完成!!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: