2011-11-01 102 views
3

我有一組標籤,按鈕和圖像,我希望將其放入流佈局面板中。如何將一組按鈕放入流佈局面板?

正如一些教程中看到的,我明白,這是可以自動對齊新的和額外的按鈕進入流佈局面板。

什麼,我想問的是,是否有可能把面板之內的流佈局面板,並調用同一面板的多個實例的流佈局面板內出現。

我的面板代碼將是

 this.panelNotification.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle; 
     this.panelNotification.Controls.Add(this.button1); 
     this.panelNotification.Controls.Add(this.lblImage); 
     this.panelNotification.Controls.Add(this.lblName); 
     this.panelNotification.Controls.Add(this.lblLinkName); 
     this.panelNotification.Controls.Add(this.lblLinkLocation); 
     this.panelNotification.Controls.Add(this.lblLocation); 
     this.panelNotification.Location = new System.Drawing.Point(3, 3); 
     this.panelNotification.Name = "panelNotification"; 
     this.panelNotification.Size = new System.Drawing.Size(506, 100); 
     this.panelNotification.TabIndex = 17; 

那麼,這可能包括整個面板爲流佈局面板?如果是的話,我該怎麼做。謝謝。

+1

備註:你應該接受你的任務的答案,因爲如果你不接受答案,有些人不會回答你的問題。 – sloth

+0

哦對不起。對於這個stackoverflow thingy還是很新的。將注意到這一點!謝謝! – Thomas

回答

4

是的,你可以把一個小組到FlowLayoutoutPanel。 不,您不能將控件多次放入FlowLayoutoutPanel(實際上您可以,但它只顯示一次)。

但是你可以做的是寫一些Factory-Method,每次調用它時都會用新的Buttons/Labels /其他控件等創建一個新面板,並將這些新實例添加到FlowLayoutpanel中。事情是這樣的:

public class Form1 
{ 
    private Panel CreateNotificationPanel() 
    { 
     var p = new Panel { BackColor = Color.Red }; 
     p.Controls.Add(new Button { Text = "Test" }); 
     return p; 
    } 

    private void Form1_Load(System.Object sender, System.EventArgs e) 
    { 
     var flp = new FlowLayoutPanel { Dock = DockStyle.Fill }; 

     flp.Controls.Add(CreateNotificationPanel()); 
     flp.Controls.Add(CreateNotificationPanel()); 
     flp.Controls.Add(CreateNotificationPanel()); 

     this.Controls.Add(flp); 
    } 

    public Form1() { Load += Form1_Load; } 
} 

另一個(和problably更好)的方法是創建一個包含按鈕/標籤/等一個用戶控件。而不是使用面板並手動添加所有控件。只需使用Designer創建並將UserControl的新實例添加到FlowLayoutPanel。

+0

哦。所以我想如何編寫一個方法來創建一個新的面板,其中包含所有這些按鈕?我是否在main.cs文件中編碼?你能告訴我一個小樣本嗎?謝謝! – Thomas

+1

添加了一個小例子 – sloth

+0

嗨,感謝您的代碼。對於createNotificationPanel方法,我如何指定按鈕的位置?以及如何指定flp出現的點?謝謝! – Thomas