Как я могу предотвратить исчезновение моей первой кнопки при создании новой?

Я пытаюсь рисовать изображения во время выполнения, поскольку я могу делать это прямо из панели инструментов. То есть, установите местоположение в местоположении мыши, измените его размер, удерживая нажатой кнопку, и перетащите его по форме. Все, что я сделал в коде. Но когда я начинаю рисовать второе окно с изображением, первое исчезает, я хочу продолжать добавлять в форму больше полей с изображениями, если я удалю событие MouseMove и перемещу PictureBox pb1 = new PictureBox(); вниз к событию MouseDown, это позволит мне добавить больше кнопок, но тогда я могу не изменить их размер, очевидно.

    int cellSize = 10;
    int numOfCells = 500;

    PictureBox pb1 = new PictureBox();
    int Mx, My;

    public Form1()
    {
        InitializeComponent();
        this.DoubleBuffered = true;
    }

    public void pictureBox1_MouseMove(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        Mx = p.X;
        My = p.Y;
        int xSnap = (Mx / cellSize) * cellSize;
        int ySnap = (My / cellSize) * cellSize;

        pb1.BackColor = (Color.Red);

        if (e.Button == MouseButtons.Left)
        {
            pb1.Size = new Size(xSnap - pb1.Left, ySnap - pb1.Top);
        }
    }

    private void pictureBox1_MouseDown(object sender, MouseEventArgs e)
    {
        Point p = new Point(e.X, e.Y);
        Mx = p.X;
        My = p.Y;
        int xSnap = (Mx / cellSize) * cellSize;
        int ySnap = (My / cellSize) * cellSize;

        pb1.Location = new Point(xSnap, ySnap);
        pictureBox1.Controls.Add(pb1);
    }

person Tangooe    schedule 06.11.2012    source источник
comment
Вам нужно добавить свой код pb1 = new PictureBox(); в событие MouseDown. В MouseMove вы должны найти, размер какого поля изображения изменяется. В противном случае вы в конечном итоге измените размер последнего поля изображения, назначенного pb1.   -  person Artemix    schedule 06.11.2012


Ответы (1)


Вы всегда повторно используете один и тот же экземпляр PictureBox.

Вам нужно создавать новый экземпляр каждый раз, когда вы хотите добавить новый, написав new PictureBox().

person SLaks    schedule 06.11.2012