类对象的C#鼠标事件

时间:2015-09-02 20:53:52

标签: c# mouseevent

首先 - 我是一名图形设计师 - 而不是程序员:/

我尝试创建简单的应用程序(C#windows窗体应用程序),可以选择添加一些对象(PictureBox)并允许用户在窗体上拖动这些PicturesBox(在添加到窗体后更改它们的位置)。

我可以为一个PictureBox执行此操作,但无法为所有dinamic创建的对象添加函数:/

我对标准Picturebox4有类似的东西

    public bool moveDetect = false;

    private void pictureBox4_MouseDown(object sender, MouseEventArgs e)
    {
        moveDetect = true;
    }

    private void pictureBox4_MouseUp(object sender, MouseEventArgs e)
    {
        if (moveDetect)
        {
            Point pozycja = new Point();
            this.Cursor = new Cursor(Cursor.Current.Handle);
            pozycja = this.PointToClient(Cursor.Position);
            pictureBox4.Location = pozycja;
        }
    }

有没有人知道任何教程,展示如何将上述功能添加到我的简单类" myPictureBox:Picturebox"

我的课程是:

class myPictureBox : PictureBox
{

    public bool moveDetect = false;

    // constructor
    public myPictureBox(int w, int h, string name)
    {
        this.Width = w;
        this.Height = h;
        this.Image = Image.FromFile("../../Resources/" + name + ".png");
        Debug.WriteLine("Created ...");
    }

}

构造函数运行良好并显示"创建..."在输出中。无法为所有对象添加功能:/

谢谢和问候;)

1 个答案:

答案 0 :(得分:0)

如果我理解正确,当您使用在设计时使用设计器创建的PictureBox时,您的代码可以正常使用事件处理程序MouseUp和MouseDown。

您可以将这些相同的事件处理程序添加到实例化时动态创建的控件:

MyPictureBox dynamicPicBox = new MyPictureBox(800, 600, "JustATest");
dynamicPicBox.MouseDown += pictureBox_MouseDown;

这会添加一个映射到方法pictureBox_MouseDown

的事件处理程序
private void pictureBox_MouseDown(object sender, MouseEventArgs e)
{
    moveDetect = true;
}

由于您的自定义类是从PictureBox派生的,因此它应该识别这种类型的事件处理程序。