2012-11-06 41 views
2

我試圖在運行時繪製出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); 
    } 
+0

您需要將'pb1 = new PictureBox();'代碼添加到MouseDown事件中。在MouseMove中,您必須找到正在調整大小的圖片框。否則,您將最終調整分配給pb1的最後一個圖片框的大小。 – Artemix

回答

2

您總是重複使用相同的PictureBox實例。

通過編寫new PictureBox(),您需要在每次要添加新實例時創建一個新實例。

+0

@Default:這是一個錯字。 – SLaks

相關問題