【问题标题】:How can I keep my first button from disappearing as a create a new one?如何防止我的第一个按钮在创建新按钮时消失?
【发布时间】:2014-04-01 15:58:42
【问题描述】:

我正在尝试在运行时绘制图片框,就像我可以直接从工具箱中所做的那样。也就是说,在鼠标位置设置位置,在我按住按钮并将其拖过表单时调整它的大小。我在代码中完成的所有工作。但是当我开始绘制第二个图片框时,第一个图片框消失了,我想继续向表单添加更多图片框,如果我删除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);
    }

【问题讨论】:

  • 您需要将 pb1 = new PictureBox(); 代码添加到 MouseDown 事件中。在 MouseMove 中,您必须找到正在调整大小的图片框。否则,您最终将调整分配给 pb1 的最后一个图片框的大小。

标签: c# picturebox


【解决方案1】:

您总是重复使用同一个 PictureBox 实例。

您需要在每次添加新实例时创建一个新实例,方法是写new PictureBox()

【讨论】:

    猜你喜欢
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多