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

Опитвам се да начертая картинни кутии по време на изпълнение, както мога да направя направо от кутията с инструменти. Тоест, задайте местоположението на мишката, преоразмерете го, докато задържам бутона и го плъзнете през формуляра. Всичко, което постигнах в кода. Но когато започна да рисувам втората картинна кутия, първата изчезва, искам да продължа да добавям още картинни кутии към формуляра, ако премахна събитието 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