我看到了this问题。
如果我明白了。做
之类的事情是不可能的TableLayout tl = new TableLayout ()
{
MouseClick += myMouseClickHandler
}
但是设置此处理程序的首选解决方案是什么?
使新类继承自TableLayout
和...
...在构造函数中添加对handler的引用。
...创建公共独立方法,例如SetupSomeEventHandler(MouseEventHandler meh)
...或者可能存在更优雅的解决方案?
答案 0 :(得分:-1)
如果你真的想在构造函数中设置它,你可以这样做。
WPF版
public class TableLayout
{
public TableLayout()
{
}
public TableLayout (Action<object, RoutedEventArgs> clickHandler)
{
MouseClick += clickHandler;
}
}
WinForms版本
public class TableLayout
{
public TableLayout()
{
}
public TableLayout (Action<object, EventArgs> clickHandler)
{
MouseClick += clickHandler;
}
}
然后
TableLayout tl = new TableLayout (myMouseClickHandler);
答案 1 :(得分:-1)
我将假设您正在使用WinForms,如果我告诉您如何使用Form
,您可以将其应用于TableLayout
类。< / p>
以下是您需要做的事情:
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);