c#鼠标事件类对象

本文关键字:对象 事件 鼠标 | 更新日期: 2023-09-27 18:10:51

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

我正在尝试创建简单的应用程序(c# windows窗体应用程序)与选项来添加一些对象(PictureBox),并允许用户拖动窗体上的那些图片框(改变他们的位置后添加到窗体)。

我可以为一个PictureBox这样做,但不能为所有动态创建的对象添加功能:/

我对标准的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 ...");
    }
}

构造函数工作良好,并在输出中显示"Created…"。不能为所有对象添加函数:/

c#鼠标事件类对象

如果我理解正确,你的代码与事件处理程序MouseUp和MouseDown工作良好,当你在设计时使用设计器创建的PictureBoxes。

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

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

这将添加一个映射到方法pictureBox_MouseDown的事件处理程序

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

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