我试图弄清楚是否有办法完成这样的事情:
Button button = new Button() { OnClick += (sender, e) => MessageBox.Show("hello") };
但它并不想工作:D我想创建一个控件并同时向其添加一个事件。有可能吗?
答案 0 :(得分:8)
不,遗憾的是,对象初始值设定项不允许您附加事件处理程序。
C#团队意识到了这个限制 - 有人希望这会出现在C#6中,但该功能已被删除。我希望它由于缺乏时间而被丢弃而不是真正失去这个功能 - 也许我们会在C#7中看到它。
答案 1 :(得分:2)
您不能。您只能初始化对象初始值设定项中的属性和字段。您需要单独附加活动。
答案 2 :(得分:1)
虽然您无法使用对象初始化程序执行此操作,但您可以这样做:
Func<EventHandler, Button> newButtonWithClick = h =>
{
Button b = new Button();
b.Click += h;
return b;
};
Button button = newButtonWithClick((sender, e) => MessageBox.Show("hello"));