我如何把按钮面板流布局面板
本文关键字:流布局 按钮 | 更新日期: 2023-09-27 18:13:26
我有一个面板的标签,按钮和图像,我希望把它放到一个流布局面板。
正如在一些教程中看到的,我知道可以自动对齐新的和额外的按钮到流布局面板。
我想问的是,是否有可能在流布局面板内放置一个面板,并调用同一面板的多个实例出现在流布局面板内。
我的面板代码是 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;
那么是否有可能将整个面板包含到流布局面板中?如果是,我该怎么做?谢谢你。
是的,你可以把面板放到FlowLayoutoutPanel中。不,你不能把一个控件多次放入FlowLayoutoutPanel(事实上你可以,但它只显示一次)。
但是你可以做的是写一些工厂方法,创建一个新的面板与新的按钮/标签/其他控件等每次你调用它,并将这些新的实例添加到你的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; }
}
另一种(可能更好的)方法是创建一个包含按钮/标签等的UserControl。而不是使用面板和手动添加所有控件。只需创建与设计器和添加新的实例的UserControl到FlowLayoutPanel