我看到了这个问题。
如果我没理解错的话。
是不可能的TableLayout tl = new TableLayout ()
{
MouseClick += myMouseClickHandler
}
但是设置这个处理程序的首选解决方案是什么?
创建新的类继承自TableLayout
和…
…向构造函数添加对处理程序的引用。
…创建像SetupSomeEventHandler(MouseEventHandler meh)
这样的公共独立方法
…或者可能存在更优雅的解决方案?
如果你真的想在构造函数中设置它,你可以这样做。
<<p> WPF版本/strong>public class TableLayout
{
public TableLayout()
{
}
public TableLayout (Action<object, RoutedEventArgs> clickHandler)
{
MouseClick += clickHandler;
}
}
<<p> WinForms版本/strong> public class TableLayout
{
public TableLayout()
{
}
public TableLayout (Action<object, EventArgs> clickHandler)
{
MouseClick += clickHandler;
}
}
然后TableLayout tl = new TableLayout (myMouseClickHandler);
我要假设你使用的是WinForms,如果我告诉你怎么做一个Form
,你就可以把它应用到你的TableLayout
类。
你需要做的是:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
public Form1(MouseEventHandler handler)
: this()
{
this.MouseClick += handler;
}
}
当创建这个表单时,我可以这样做:
var form1 = new Form1((s, e) => { MessageBox.Show("You clicked me!"); })
在你的例子中,它看起来像这样:
TableLayout tl = new TableLayout(myMouseClickHandler);