0

我可以实现一个自定义点击事件,当用户点击我的对象时引发。

我的对象没有继承任何类,但它具有 Location Width Height 属性。

问题是:我不知道创建 MyObj 时如何订阅点击事件的代码。

public delegate void CusEventHandler(object sender, CusEventArgs e);
public class MyObject
{
    private Point location;
    private int width;
    private int height;
    public event CusEventHandler Click;
    public MyObject(Point loc, int w, int h)
    {
        this.location = loc;
        this.width= w;
        this.height= h;
    }
    protected virtual void OnClick(CusEventArgs e)
    {
        if (Click != null)
        {
            Click(this, e);
        }
    }
}
public partial class Form1 : Form
{
    public MyObject myObj;
    public Form1()
    {
        InitializeComponent();
        myObj = new (new Point(5,5),100,100);
        myObj.Click+= new CusEventHandler(myObj_click);
    }
    private void myObj_click(object sender,CusEventArgs e)
    {
        //Some logic
    }
}
4

2 回答 2

1

您重新开始从 Control 继承您的类,因此命中测试已经为您完成。另见这篇文章。

于 2013-03-26T13:16:14.633 回答
0

如果你不能复制可点击控件中使用的逻辑,System.Windows.Controls.Button那么你就不能这样做。您必须从提供 - 事件的控件继承Click。这就是为什么存在继承,并且大多数控件都允许您从它们继承。

此外,如果您的控件确实继承自基类,System.Windows.Controls.Control您也不能在 Windows 中使用它。

这里

于 2013-03-26T13:14:28.327 回答