【发布时间】:2011-01-05 20:07:20
【问题描述】:
前言
我有一个 Windows 窗体按钮,它公开事件 OnClick(对象发送者,EventArgs e)。 在我的应用程序中,我可以使用 C# 的经典事件处理技术来处理这个问题:
// Button Creation
Button button = new Button();
button.Click += MyEventHandler;
然后 Windows 窗体要求我提供具有以下签名的处理程序:
public void MyEventHandler(object sender, EventArgs e) { }
假设我想使用 lambda 表达式来执行此操作,我可以使用以下语法:
button.Click += (sender, args) =>
{
// execute the code
};
这样做的缺点是我无法取消订阅 Lambda 表达式。
问题
我想做的是有一个实用程序类,它允许我处理任何 Click 事件以及使用额外的 Action 作为参数。所以我想写这样的东西:
button.Click += MyUtility.Click(()
=> {
// the custom code the Click event will execute
})
我能以某种方式做到吗?
【问题讨论】:
-
既然您已经有了解决方案,为什么还要经历所有这些?如果您需要取消订阅,请不要使用 lambda,很简单。
-
你根本没有回答问题...
标签: c# winforms event-handling action