簡體   English   中英

不繼承自Control的C#自定義單擊事件

[英]C# Custom click event that not inherit from Control

我可以實現一個自定義單擊事件,該事件在用戶單擊我的對象時引發。

我的對象沒有繼承任何類,但是具有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
    }
}

建議您從Control繼承類,這樣就已經為您完成了命中測試。 另請參閱這篇文章。

如果您無法復制System.Windows.Controls.Button等可單擊控件中使用的邏輯,那么您將無法做到這一點。 你必須從它提供了一個控制繼承Click -event。 這就是為什么存在繼承,並且大多數控件都提供了從它們繼承的原因。

另外,如果您的控件確實繼承自System.Windows.Controls.Control類的基類,則您也無法在Windows中使用它。

這里

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM