在C#中创建对象时订阅事件
本文关键字:事件 创建对象 | 更新日期: 2023-09-27 18:25:38
在C#(.NET 4.5)中,我想在创建对象时订阅一个事件。
当然,以下方法会起作用:
CheckBox c = new CheckBox();
c.Name = "TheCheckBox";
c.Checked += c_Checked;
但想知道是否有可能做一些类似的事情
CheckBox c = new CheckBox() {
Name = "TheCheckBox",
Checked += c_Checked
}
讨论后编辑:这是为了完成类似于:
MyUniformGrid.Add(new CheckBox() {
Name = "TheCheckBox",
Checked += CheckHandler
});
否,不幸的是,对象初始化器中不支持事件订阅。这将使在某些情况下创建GUI变得非常简单,但不…
中途之家是:
Checkbox c = new CheckBox { Name = "TheCheckBox" };
c.Checked += c_Checked;
(理想情况下,将c_Checked
重命名为一个真正有意义的名称-我讨厌这里VS生成的名称…)
如果您可以控制控件,则可以始终在构造函数中设置事件处理程序。类似于:
public class Program
{
private static void Main(string[] args)
{
Checkbox checkbox = new Checkbox(OnChecked);
checkbox.TriggerChecked();
}
private static void OnChecked(object sender, EventArgs args)
{
Console.WriteLine("triggered event");
}
}
public class Checkbox
{
public event EventHandler<EventArgs> Checked;
public Checkbox(EventHandler<EventArgs> eventHandler)
{
Checked += eventHandler;
}
public void TriggerChecked()
{
var handler = Checked;
if (handler != null)
handler(this, new EventArgs());
}
}