我正在尝试在运行时绘制图片框,因为我可以直接从工具箱中进行操作。也就是说,在鼠标定位时设置位置,在按住按钮并将其拖动到表单上时调整其大小。我在代码中完成的所有事情。但是当我开始绘制第二个图片框时,第一个图片框消失了,我想继续向表单添加更多图片框,如果我删除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);
}
答案 0 :(得分:2)
您总是在重复使用相同的PictureBox
实例。
您需要在每次添加新实例时创建一个新实例,方法是编写new PictureBox()
。