2013-08-07 41 views
0

我想手動創建的PictureBox和標籤上的水平面板,圖片框的數量和麪板未知的標籤,也許200或更多或更少,我用下面的代碼,這樣做,但我面對兩個困難第一招: 我想補充的第一次創建新的對象不到底例如,如果我創建的項目「ABCDE」希望它加上面板「EDCBA」希望總是新來第一。 注意:面板寬度「230」高度「710」 第二個問題: 當前當我使用面板滾動條往下添加新對象查找發生最後一個對象創建和新的大自由空間,如果我使用再次滾動下來,在面板上創建新的對象發生更大的可用空間。創建面板對象和安排對象在第一個新的不結束

  int Right = 50, Top = 0; 

      // Create Image + Text 
      PictureBox pbox = new PictureBox(); 
      pbox.Size = new Size(140, 80); 
      pbox.Location = new Point(Right, Top); 
      pbox.Image = Image.FromFile(""); 
      Panel1.Controls.Add(pbox); 


      // Create label 
      Label lblPlateNOBAR = new System.Windows.Forms.Label(); 
      lblPlateNOBAR.Text = lblPlateNO.Text; 
      lblPlateNOBAR.Location = new Point(Right + 20, Top + 80); 
      Panel1.Controls.Add(lblPlateNOBAR); 

      Top = Top + 150; 

回答

0

爲了使物體插入面板,你需要移動它已經存在於面板中的控件:

int right = 50; 

// Create Image + Text 
PictureBox pbox = new PictureBox(); 
pbox.Size = new Size(140, 80); 
pbox.Location = new Point(right, 0); 
pbox.Image = Image.FromFile(""); 

// Create label 
Label lblPlateNOBAR = new System.Windows.Forms.Label(); 
lblPlateNOBAR.Text = lblPlateNO.Text; 
lblPlateNOBAR.Location = new Point(right + 20, 80); 

foreach(var control in Panel1.Controls) 
{ 
    control.Top = control.Top + 150; 
} 

Panel1.Controls.Add(pbox); 
Panel1.Controls.Add(lblPlateNOBAR); 
+0

foreach(pnSettings.Controls中的控件控件) control.Top = control.Top + 150; } –

+0

@ user1530499更簡潔: 'foreach(Control control in pnSettings.Controls)control.Top + = 150;' 不需要眉毛托架,你可以使用+ =操作符:) – ehsan88

0

我知道它似乎我不是回答你的問題,但你也可以花很少的時間來了解我的建議。我不知道你想達到什麼樣的,但是當你要做出這樣一個複雜的程序,這是一個更好的做法,你做所有的工作需要自己,而不是依賴於Windows窗體控件。嘗試添加,刪除,更改許多控件的位置會極大地降低應用程序的性能。我建議你畫的,例如你的照片,你自己,用GraphicsImage對象和Paint事件。還要處理點擊和選擇圖片MouseEvents。也許起初似乎有點辛苦,但是你做到了這一點後,你有更好的性能和靈活性。考慮到你提到你想在面板中放置200張照片,這變得更加重要。這也可以防止更改許多控件位置時出現的閃爍問題。這是很好的一提的是做在這種情況下滾動,你可以放置一個Panel一個家長Panel內,並使用AutoScroll功能僅適用於父面板處理滾動。這樣你就不必關心滾動了。

+0

太好了,我喜歡你的父母想法面板和子面板它解決了問題容易。關於繪製對象,我不知道這將如何使性能比使用Windows窗體控件更好,對不起,因爲我沒有這方面的經驗,請你給我建議鏈接解釋或向我解釋更多:) –

+0

@ user1530499我想你會看到一些閃爍,當你添加很多控制,並把他們所有的150像素。另外,如果您一次添加200個控件,則需要一些時間。同時存儲200個控件佔用大量內存。每個控制類存儲許多您不需要的信息。現在個人電腦擁有比以前更多的資源,但這並不意味着我們應該破壞資源。應該與所需的工作和資源保持適當的對應關係。然而,有時它更好地做你現在已經知道的事情,但是考慮更好的未來方式。 – ehsan88