[转] WinForm实现移除控件某个事件的方法

简介:

原文 WinForm实现移除控件某个事件的方法

本文实例讲述了WinForm实现移除控件某个事件的方法,供大家参考借鉴一下。具体功能代码如下:

主要功能部分代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
/// <summary>
/// 移除控件某个事件
/// </summary>
/// <param name="control">控件</param>
/// <param name="eventName">需要移除的控件名称eg:EventClick</param>
public  static  void  RemoveControlEvent( this  Control control,  string  eventName)
{
  FieldInfo _fl =  typeof (Control).GetField(eventName, BindingFlags.Static | BindingFlags.NonPublic);
   if  (_fl !=  null )
  {
     object  _obj = _fl.GetValue(control);
    PropertyInfo _pi = control.GetType().GetProperty( "Events" , BindingFlags.NonPublic | BindingFlags.Instance);
    EventHandlerList _eventlist = (EventHandlerList)_pi.GetValue(control,  null );
   if  (_obj !=  null  && _eventlist !=  null )
    _eventlist.RemoveHandler(_obj, _eventlist[_obj]);
  }
}

 使用代码:

1
2
3
4
5
6
7
8
private  void  WinRemoveControlEventTest_Load( object  sender, EventArgs e)
{
  button1.RemoveControlEvent( "EventClick" );
}
private  void  button1_Click( object  sender, EventArgs e)
{
  MessageBox.Show( "button1_Click" );
}

 

没有整理与归纳的知识,一文不值!高度概括与梳理的知识,才是自己真正的知识与技能。 永远不要让自己的自由、好奇、充满创造力的想法被现实的框架所束缚,让创造力自由成长吧! 多花时间,关心他(她)人,正如别人所关心你的。理想的腾飞与实现,没有别人的支持与帮助,是万万不能的。



    本文转自wenglabs博客园博客,原文链接:http://www.cnblogs.com/arxive/p/5885010.html ,如需转载请自行联系原作者


相关文章
|
6月前
|
关系型数据库 MySQL C#
C# winform 一个窗体需要调用自定义用户控件的控件名称
给用户控件ucQRCode增加属性: //二维码图片 private PictureBox _pictureBoxFSHLQrCode; public PictureBox PictureBoxFSHLQrCode {   get { return _pictureBoxFSHLQrCode; }   set { this.pictureBoxFSHLQrCode = value; } } 在Form1窗体直接调用即可: ucQRCode uQRCode=new ucQRCode(); ucQRCode.PictureBoxFSHLQrCode.属性= 要复制或传给用户控件上的控件的值
37 0
|
消息中间件 安全 C#
WinForm-跨线程更新UI控件常用方法
WinForm-跨线程更新UI控件常用方法
638 0
WinForm-跨线程更新UI控件常用方法
|
C# Windows
WPF中的事件列表
原文:WPF中的事件列表 以下是WPF中的常见事件汇总表(按字母排序),翻译不见得准确,但希望对你有用。 事件 描述 Annotation.AnchorChanged 新增、移除或修改 Anchor 元素时发生。
1090 0
|
C#
WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果
原文:WPF Label控件在数据绑定Content属性变化触发TargetUpdated事件简单实现类似TextChanged 事件效果   本以为Label也有TextChanged 事件,但在使用的时候却没找到,网友说Label的Content属性改变肯定是使用赋值操作,赋值的时候就可以对其进行相应的操作所以不需TextChanged 事件。
1951 0
|
前端开发 C# 容器
WPF 中动态创建和删除控件
原文:WPF 中动态创建和删除控件 动态创建控件 1.容器控件.RegisterName("Name",要注册的控件)   //注册控件 2.
1100 0
|
JavaScript C#
C#(WPF)去除事件中注册的事件处理方法!
在WPF中,移除一个事件中已经注册的处理方法,看似简单,实际还是很痛苦的一件事情。因为C#的灵活性,定义事件的方法也是多种多样。我自己定义了一个事件: public event EventHandler TestEvent; 当我想注销这个事件上注册的所有方法的时候,我可以按如下的方法进行 Delegate[] dels = TestEvent.
3928 0