2013-03-26 4 views
0

Могу ли я реализовать пользовательское событие click, которое возникает при нажатии пользователем на мой объект.C# Пользовательское событие клика, которое не наследуется от элемента управления

Мой объект не наследует какой-либо класс, но имеет свойства высоты ширины местоположения.

Вопрос: я не знаю, как код, когда я создаю MyObj, подписаться на событие click.

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 –

+0

Почему бы вам просто не наследовать что-то, что обеспечивает функциональность, которую вы ищете? В этом весь смысл в наследовании. – emd

ответ

0

Если вы не можете воспроизвести логику, используемую в интерактивном управлении как System.Windows.Controls.Button то вы не можете сделать это. Вы должны наследовать от элемента управления, который предоставляет Click -event. Вот почему есть наследование, и большинство элементов управления предлагают вам унаследовать их.

Кроме того, если ваш элемент управления наследуется от базового класса, такого как System.Windows.Controls.Control, вы также не можете использовать его в Windows.

См. here.

1

Вы снова наследуете свой класс от Control, так что тестирование на удар уже сделано для вас. См. Также this post.