[英]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.