我試圖在運行時繪製出pictureboxes,因爲我可以從工具箱中直接進行繪製。也就是說,在鼠標位置設置位置,調整它的大小,因爲我按住按鈕並將其拖過窗體。我在代碼中完成的所有事情。但是,當我開始繪製第一個消失的第一個圖片框時,我想繼續添加更多的圖片框到表單中,如果我刪除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的最後一個圖片框的大小。 – Artemix