2

ツールボックスから直接できるように、実行時にピクチャボックスを描画しようとしています。つまり、マウスの位置に位置を設定し、ボタンを押したままフォーム上でドラッグしてサイズを変更します。私がコードで達成したすべてのこと。しかし、2番目のピクチャボックスの描画を開始すると、最初のピクチャボックスが消えます。フォームにさらにピクチャボックスを追加したいのですが、イベントを削除して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);
    }
4

1 に答える 1

2

PictureBox常に同じインスタンスを再利用しています。

新しいインスタンスを追加するたびに、新しいインスタンスを作成する必要がありますnew PictureBox()

于 2012-11-06T15:37:58.023 に答える