C# 调用一个按钮的Click事件 您所在的位置:网站首页 单选按钮绑定点击事件 C# 调用一个按钮的Click事件

C# 调用一个按钮的Click事件

2024-06-26 08:52| 来源: 网络整理| 查看: 265

最基本的调用方法

(1)button1.PerformClick(); (2)button1_Click(null,null); (3)button_Click(null,new EventArgs());

利用反射调用****最开始的调用方法

//建立一个函数

private void callOnClick(Button btn) { //建立一个类型 Type t = typeof(Button); //参数对象 object[] p = new object[1]; //产生方法 MethodInfo m = t.GetMethod("OnClick", BindingFlags.NonPublic | BindingFlags.Instance); //参数赋值。传入函数 p[0] = EventArgs.Empty; //调用 m.Invoke(btn, p); return; } //调用例子。 //调用Button1的onclick callOnClick(Button1); //调用Button5的onclick callOnClick(Button5);

扩展一下,可以调用更多的事件

private void callButtonEvent(Button btn, string EventName) { //建立一个类型 Type t = typeof(Button); //参数对象 object[] p = new object[1]; //产生方法 MethodInfo m = t.GetMethod(EventName, BindingFlags.NonPublic | BindingFlags.Instance); //参数赋值。传入函数 //获得参数资料 ParameterInfo[] para = m.GetParameters(); //根据参数的名字,拿参数的空值。 p[0] = Type.GetType(para[0].ParameterType.BaseType.FullName).GetProperty("Empty"); //调用 m.Invoke(btn, p); return; } //调用例子。 //调用Button1的onclick callButtonEvent(Button1,"OnClick"); //调用Button5的OnKeyPress callButtonEvent(Button5,"OnKeyPress");

现在,再来一次扩展。可以处理Button,TextBox等等的一些事件

private void callObjectEvent(Object obj, string EventName) { //建立一个类型,AssemblyQualifiedName拿出有效的名字 Type t = Type.GetType(obj.GetType().AssemblyQualifiedName); //参数对象 object[] p = new object[1]; //产生方法 MethodInfo m = t.GetMethod(EventName, BindingFlags.NonPublic | BindingFlags.Instance); //参数赋值。传入函数 //获得参数资料 ParameterInfo[] para = m.GetParameters(); //根据参数的名字,拿参数的空值。 p[0] = Type.GetType(para[0].ParameterType.BaseType.FullName).GetProperty("Empty"); //调用 m.Invoke(obj, p); return; } //调用例子。 //调用Button1的onclick callObjectEvent(Button1,"OnClick"); //调用Button5的OnKeyPress callObjectEvent(Button5,"OnKeyPress"); //调用Text1的OnTextChanged callObjectEvent(Text1, "OnTextChanged");

继续来多一个扩展。可以传入事件参数

private void callObjectEvent(Object obj, string EventName, EventArgs e=null) { //建立一个类型 //Type t = typeof(obj.GetType); Type t = Type.GetType(obj.GetType().AssemblyQualifiedName); //产生方法 MethodInfo m = t.GetMethod(EventName, BindingFlags.NonPublic | BindingFlags.Instance); //参数赋值。传入函数 //获得参数资料 ParameterInfo[] para = m.GetParameters(); //根据参数的名字,拿参数的空值。 //参数对象 object[] p = new object[1]; if (e == null) p[0] = Type.GetType(para[0].ParameterType.BaseType.FullName).GetProperty("Empty"); else p[0] = e; //调用 m.Invoke(obj, p); return; } //调用例子。 //调用Button1的onclick callObjectEvent(Button1,"OnClick"); //调用Button5的OnKeyPress callObjectEvent(Button5,"OnKeyPress"); //调用Text1的OnTextChanged callObjectEvent(Text1, "OnTextChanged"); //调用Form的KeyPress事件, this就是那个winform, 并且传入回车键 callObjectEvent(this, "OnKeyPress", new KeyPressEventArgs((char)13));

使用到的命名空间如下:

using System.Reflection;


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有