2011-11-01 74 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