[WinForm]移除控件某个事件

关键代码:

        /// <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]);
            }
        }

使用代码:

        private void WinRemoveControlEventTest_Load(object sender, EventArgs e)
        {
            button1.RemoveControlEvent("EventClick");
        }
        private void button1_Click(object sender, EventArgs e)
        {
            MessageBox.Show("button1_Click");
        }

.csharpcode, .csharpcode pre
{
font-size: small;
color: black;
font-family: consolas, "Courier New", courier, monospace;
background-color: #ffffff;
/*white-space: pre;*/
}
.csharpcode pre { margin: 0em; }
.csharpcode .rem { color: #008000; }
.csharpcode .kwrd { color: #0000ff; }
.csharpcode .str { color: #006080; }
.csharpcode .op { color: #0000c0; }
.csharpcode .preproc { color: #cc6633; }
.csharpcode .asp { background-color: #ffff00; }
.csharpcode .html { color: #800000; }
.csharpcode .attr { color: #ff0000; }
.csharpcode .alt
{
background-color: #f4f4f4;
width: 100%;
margin: 0em;
}
.csharpcode .lnum { color: #606060; }

[WinForm]移除控件某个事件

时间: 2024-08-02 23:27:49

[WinForm]移除控件某个事件的相关文章

模拟winform里的控件的事件和委托机制

下面的代码是我模块winform的事件机制,一看就懂. using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ClassLibrary.事件 { class 模拟控件事件机制 { } public class Form1 { MyButton button1; public Form1() { For

WinForm动态添加控件及其事件(转)

出处:http://blog.sina.com.cn/s/blog_60d576800100tf61.html 1        private void PhotoForm_Load(object sender, System.EventArgs e) 2        { 3            this.LoadPhoto(); 4        } 5        private void LoadPhoto() 6        { 7            int  i= 0; 

WinForm 清空界面控件值的小技巧

原文:WinForm 清空界面控件值的小技巧 在WinForm里面有时候需要清空自己输入内容或是选择的选项,以便重新操作流程,那么一般你是怎么清空界面各个控件值的呢?如果窗体里面控件,尤其是TextBox控件比较多的时候,代码里面是不是要设置每个控件的Text属性值为空呢?下面我用这个例子,来探讨下清空界面控件值的小技巧.而且还能复用.不必每个窗体都做这些枯燥.无聊的工作. 一般的做法是在清除控件的事件里面添加下面这样的代码: 代码 private void btnClear_Click(obj

WinForm之中BindingNavigator控件的使用

WinForm之中BindingNavigator控件的使用在微软WinForm中,BindingNavigator控件主要用来绑定数据.可以将一个数据集合与该控件绑定,以进行数据 联动的显示效果.如图下图所示: 那么,下面我们就来用BindingNavigator控件做一下上图所示的效果.分析:该案例以BindingNavigator控件为主线,我们定义一个实体类,将实体类以集合的形式显示在DataGridView中, 同时,将BindingNavigator与DataGridView绑定,将

WinForm窗体及其控件的自适应

3步骤: 1.在需要自适应的Form中实例化全局变量   AutoSizeFormClass.cs源码在下方 AutoSizeFormClass asc = new AutoSizeFormClass(); 2.Form_Load事件中   asc.controllInitializeSize(this); 3.Page_SizeChanged事件中 asc.controlAutoSize(this); AutoSizeFormClass.cs源码如下: class AutoSizeFormCl

WinForm中关于控件焦点的问题

方法一: 在打开一个窗体时,我们往往需要设置焦点让光标出现在我们希望它出现的位置上. 这时我们可以在窗体的Activated事件中设置焦点 例如我们希望光标在打开窗体的时候出现在textBox1上,我们只需要在Activated事件中添加如下代码: this.textBox1.Focus(); 即可. Activated事件:当窗体被激活时发生的事件. this.Activated += (sender, e) => {  this.txtCustomerNo.Focus();//光标在文本框控

Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼

Winform中Treeview控件失去焦点,将选择的节点设置为高亮显示 (2012-07-16 13:47:07)转载▼标签: winform treeview drawnode Treeview控件--Name:tVtypeList将tVtypeList的HideSelection属性设置为False,DrawMode属性设置为OwnerDrawText将tVtypeList的DrawNode事件写为:private void tVtypeList_DrawNode(object sende

C# WinForm窗体及其控件自适应各种屏幕分辨率

C# WinForm窗体及其控件自适应各种屏幕分辨率 一.说明  我们自己编写程序的界面,会遇到各种屏幕分辨率,只有自适应才能显的美观.实际上,做到这点也很简单,就是首先记录窗体和它上面控件的初始位置和大小,当窗体改变比例时,其控件的位置和大小也按此比例变化即可.因为窗体上控件的位置和大小是相对于自己所在的窗体的,也就是所谓的窗口坐标.  在这里我们只考虑相对于自己窗体的窗口坐标更简单,也就是成比例变化.为了多个窗体共用,我在这里创建一个类AutoSizeFormClass ,1.使用它去记录窗

#这个测试程序有助于我们理解wxPython的界面设计,基本的控件和事件调用都有

#!/bin/env python # -*- coding: utf-8 -*- ################################################################################# #这个测试程序有助于我们理解wxPython的界面设计,基本的控件和事件调用都有 ################################################################################# imp