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 に答える