【问题标题】:How do I put a panel of buttons into flow layout panel?如何将按钮面板放入流布局面板?
【发布时间】:2011-11-01 23:17:06
【问题描述】:

我有一个标签、按钮和图像面板,我希望将其放入流布局面板中。

正如在一些教程中看到的那样,我知道可以将新按钮和附加按钮自动对齐到流布局面板中。

我想问的是,是否可以将面板放在流布局面板中,并调用同一面板的多个实例以显示在流布局面板中。

我的面板代码是

        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;

那么是否可以将整个面板包含在流布局面板中?如果是,我该怎么做。谢谢。

【问题讨论】:

  • 旁注:您应该接受对您有帮助的问题的答案,因为如果您不接受答案,有些人将不会回答您的问题。
  • 对不起。这个stackoverflow的东西还是很新的。会注意的!谢谢!

标签: c# user-interface


【解决方案1】:

是的,您可以将 Panel 放入 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 的新实例添加到 FlowLayoutPanel。

【讨论】:

  • 哦。那么我该如何编写一个方法来创建一个包含所有这些按钮的新面板呢?我在 main.cs 文件中对其进行编码吗?你能给我看一个小样本吗?谢谢!
  • 您好,感谢您的代码。对于 createNotificationPanel 方法,我如何指定按钮的位置?以及如何指定 flp 出现的点?谢谢!
  • 您可以使用设计器创建一个用户控件,而不是使用创建面板的方法。将是最简单的方法。
  • 很抱歉,我对使用 Visual Studio 进行 c# 编程还是比较陌生。我可以知道你是什么意思吗?用我在 main.cs 中指定的按钮和位置创建一个面板实例对我来说会很麻烦吗?
  • 如果要指定绝对位置,使用Panel的Location-Property来设置位置
猜你喜欢
  • 2022-01-19
  • 2017-11-23
  • 2014-08-07
  • 2011-11-18
  • 1970-01-01
  • 2014-07-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多