2013-03-26 131 views
0

我可以實現一個自定義點擊事件,當用戶點擊我的對象時引發。C#自定義點擊事件,不從控件繼承

我的對象不會繼承任何類,但它具有位置寬度高度屬性。

問題是:我不知道當我創建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 
    } 
} 
+3

您的對象不是一個可視化組件。我不認爲任何人都可以看到它點擊它。我認爲你需要繼承自:System.Windows.Forms.UserControl – 2013-03-26 13:14:02

+0

爲什麼你不只是從提供你正在尋找的功能的東西繼承?這是繼承的重點。 – emd 2013-03-26 13:15:32

回答

0

如果你不能複製在點擊控件中使用像System.Windows.Controls.Button邏輯,那麼你不能做到這一點。您必須從提供Click事件的控件繼承。這就是爲什麼有繼承,並且大部分控件都提供了從它們繼承的方法。

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

請參閱here

1

你重新開始從Control繼承你的類,這樣已經爲你完成了命中測試。 另請參閱this post.