我正在.NET 2.0 中编写一个应用程序,我需要FlowLayoutPanel
WinForms 的功能。这是我想出的我现在正在使用的代码(主要是标签):
/// <summary>
/// Flowable layout panel
/// </summary>
public partial class FlowLayoutPanel : Panel
{
public FlowLayoutPanel()
{
InitializeComponent();
}
/// <summary>
/// Flow the layout of the panel. Required before presentation.
/// </summary>
public void Layout()
{
int top = 0;
// Set control position
foreach (Control ctrl in this.Controls)
{
ctrl.Top = top;
// Account for the scrollbar
ctrl.Width = this.Width - 17;
top += ctrl.Height;
}
}
}
面板被添加到表单中(在我的例子中,是一个动态生成的标签页),然后我在表单的代码视图中添加控件,如下所示:
panel.Controls.Add(new Label() { Text = "Item name", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.ItemName });
panel.Controls.Add(new Label() { Text = "Category", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.Category });
panel.Controls.Add(new Label() { Text = "Quantity", Font = boldTahoma });
panel.Controls.Add(new Label() { Text = item.Quantity });
panel.Layout();
所以我想我有两个问题。它有效,但是有没有更好的方法来做到这一点(特别是我不必Layout()
每次都打电话),有没有办法让标签自动高度?谢谢。