c# - 如何在运行时克隆 Control 事件处理程序?

标签 c# .net winforms controls event-handling

我想复制一个控件,如按钮、文本框等。 但我不知道如何将事件处理程序方法(如 Click)复制到新控件。

我现在有以下代码:

var btn2 = new Button();  
btn2.Text = btn1.Text;
btn2.size = btn1.size;
// ...
btn2.Click ??? btn1.Click

有没有其他方法可以复制控件?

最佳答案

克隆任何 WinForms 控件的所有事件:

var eventsField = typeof(Component).GetField("events", BindingFlags.NonPublic | BindingFlags.Instance);
var eventHandlerList = eventsField.GetValue(button1);
eventsField.SetValue(button2, eventHandlerList);

关于c# - 如何在运行时克隆 Control 事件处理程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6055038/

相关文章:

C# Winforms,迁移到 NHibernate

c# - 使用一个 List<> 从另一个 List<> 中删除条目

c# - LINQ to Entities 仅支持无参数构造函数和初始值设定项

c# - 板载 ReSharper 时的 T4MVC?

c# - 从另一个类(在另一个线程上)写在文本框中

c# - 如何获取本地鼠标位置

c# - 尝试在 C# 中使用 ODbc 从 MSysObjects 中读取数据,但没有权限错误

.net - 使用 .NET 中的嵌套表调用 Oracle 存储过程

c# - 类中的值类型存储在哪里?

c# - 由于服务操作量大,添加服务引用时出错