link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?

问题描述

link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?

link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?

解决方案

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Reflection;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;

namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
button1.Click += button1_Click_1;
}

    private void button1_Click(object sender, EventArgs e)
    {
        MessageBox.Show("button1_0");
    }
    private void button1_Click_1(object sender, EventArgs e)
    {
        MessageBox.Show("button1_1");
    }
    public static Delegate[] GetObjectEventList(object p_Object, string p_EventName, Type p_EventType)
    {
        PropertyInfo _PropertyInfo = p_Object.GetType().GetProperty("Events", BindingFlags.Instance | BindingFlags.NonPublic);
        if (_PropertyInfo != null)
        {
            object _EventList = _PropertyInfo.GetValue(p_Object, null);
            if (_EventList != null && _EventList is EventHandlerList)
            {
                EventHandlerList _List = (EventHandlerList)_EventList;
                FieldInfo _FieldInfo = p_EventType.GetField(p_EventName, BindingFlags.Static | BindingFlags.NonPublic | BindingFlags.IgnoreCase);
                if (_FieldInfo == null) return null;
                Delegate _ObjectDelegate = _List[_FieldInfo.GetValue(p_Object)];
                if (_ObjectDelegate == null) return null;
                return _ObjectDelegate.GetInvocationList();
            }
        }
        return null;
    }

    private void button2_Click(object sender, EventArgs e)
    {
        Delegate[] _List = GetObjectEventList(button1, "EventClick", typeof(Control));
        _List[1].Method.Invoke(this, new object[] { sender, e });
    }
}

}

时间: 2024-10-31 11:01:21

link下,比如有一个事件,+=了两个方法,如何只执行第二个方法,不执行第一个?的相关文章

用任意顺序开始每完成1个进程 未进行的进程任意一个开始进行 同时进行的进程个数为x个 第二种方法跟第一种类似 只是x个进程同时进行 且都已经订好位置

问题描述 usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading;namespace任务调度算法{classProgram{staticvoidMain(string[]args){Renwurw=newRenwu();rw.main();Thread.Sleep(20000);}}publicclassRenwu{publicenumstate{rea

WSS3SDK之如何创建一个事件处理程序Feature

本例将展示如何添加一个简单的事件处理器来阻止从某列表中删除列表项.这个任务包括两个步骤: 在Visual Studio中创建事件处理程序 将事件处理程序作为Feature添加到WSS中 在Vistual Studio中创建一个事件处理程序 在Visual Studio中通过点击文件->新建->项目来新建一个项目 在新建项目对话框中,选择项目类型为 Visual C# ,模板选择类库 , 名称框中输入 DeletingEventHandler ,然后点击确定. 在解决方案管理器中,选择 Dele

如何在Excel中快速辨别两列数据是否一致的四种方法介绍

  我们以下表的数据为例,具体的介绍一下操作方法. 方法一: Excel分别对AB列两列数据对比,比如A2=B2,就返回相同,否则返回不相同. D2公式为:=IF(C2=B2,"相同","不同"),这样就可以实现excel两列对比,判断C2和B2是否相同,如果相同就返回值"相同",反之则显示不同. 同样的方法比较其它数据,结果如下图: 不过细心的朋友会发现,B5和C5实质上有大小写区分的,因此使用这个公式不是完全准确.Excel中exact函数可

link下如何给Collectio类添加一个Changed事件,代码怎么写?

问题描述 link下如何给Collectio类添加一个Changed事件,代码怎么写? link下如何给Collectio类添加一个Changed事件,代码怎么写? 解决方案 http://www.360doc.com/content/13/0418/22/9316347_279324054.shtml 解决方案二: http://www.cnblogs.com/scottckt/archive/2012/06/15/2550440.html

link下对Collection<T>集合做出的修改,怎么用事件加以处理

问题描述 link下对Collection<T>集合做出的修改,怎么用事件加以处理 link下对Collection集合做出的修改,怎么用事件加以处理?没有CollectionChanged 解决方案 Collection不行,你可以从Collection派生一个集合类,添加上CollectionChanged事件

link中如何判断一个事件里面有几个方法?如何选择性调用?

问题描述 link中如何判断一个事件里面有几个方法?如何选择性调用? link中如何判断一个事件里面有几个方法?如何选择性调用? 解决方案 using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Reflection; using System.Text;

link中如何遍历一个事件中所有的方法,遍历事件的方法是用发射么?

问题描述 link中如何遍历一个事件中所有的方法,遍历事件的方法是用发射么? link中如何遍历一个事件中所有的方法,遍历事件的方法是用发射么? 解决方案 public static Delegate[] GetObjectEventList(object p_Object, string p_EventName, Type p_EventType) { PropertyInfo _PropertyInfo = p_Object.GetType().GetProperty("Events&quo

link下多集合监视和事件通知机制是靠什么完成的?

问题描述 link下多集合监视和事件通知机制是靠什么完成的? link下多集合监视和事件通知机制是靠什么完成的? 解决方案 引起集合变动的无非就是add remove等几个方法, 在里面插入代码,引起changed事件就可以实现了

JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发,

问题描述 JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发, JS触发方法事件,三个下拉框,其中任意两个有值,第三个改变时触发, 解决方案 3个select的事件都判断下是否都有值了,有了就执行相关代码 if(sel1.value!=''&&sel2.value!=''&&sel3.value!=''){ //..... } 解决方案二: JS改变input的value值不触发onchange事件解决方案 解决方案三: 你这是什么意思?任意两个有值?第三个改