【发布时间】:2020-03-25 13:06:15
【问题描述】:
因为我是新手,所以当我想为表格的列宽设置值时遇到问题(使用代码 C#)
我想展示类似的图片
但是当我编码时:
private void Form1_Load(object sender, EventArgs e)
{
// TableLayoutPanel tableLayoutPanel = new TableLayoutPanel();
tableLayoutPanel.ColumnCount = 3;
tableLayoutPanel.RowCount = 1;
tableLayoutPanel.CellBorderStyle = TableLayoutPanelCellBorderStyle.OutsetDouble;
tableLayoutPanel.Dock = DockStyle.Top;
tableLayoutPanel.Height = 100;
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F));
#region Create Label1, label2, label3
Label label1 = new Label();
label1.Text = "Width 10%";
//label1.Dock = DockStyle.Fill;
Label label2 = new Label();
label2.Text = "Width 60%";
//label1.Dock = DockStyle.Fill;
Label label3 = new Label();
label3.Text = "Width 30%";
//label1.Dock = DockStyle.Fill;
#endregion
tableLayoutPanel.Controls.Add(label1, 0, 0);
tableLayoutPanel.Controls.Add(label2,1,0);
tableLayoutPanel.Controls.Add(label3, 2, 0);
}
列宽不正确如下
我不知道为什么。请告诉我以及如何解决它。 感谢阅读
【问题讨论】:
-
我看不到您将
tableLayoutPanel添加到this.Controls()的位置(您正在这里创建一个新控件)。当你这样做时,它会按预期工作:) 除非你的表单中已经有另一个 TableLayoutPanel,并且你认为你正在设置那个的属性。 -
我将如何写作?
-
如果这是一个现有的 TableLayoutPanel(在您编辑后出现),请阅读注释 here。在实践中,您必须先删除现有样式。因此,在
tableLayoutPanel.RowCount = 1;之后,添加tableLayoutPanel.ColumnStyles.RemoveAt(0);两次(即使在设计器中只有一列和一行,样式也是两个。在我链接的注释中有描述)。 -
谢谢吉米。但是我不明白。那么,你能给我写一个例子吗?
-
您的 Form1 中是否已经有一个名为
tableLayoutPanel的 TableLayoutPanel?如果有,它有多少列/行?
标签: c# winforms windows-forms-designer column-width