【问题标题】:Column width of table not correctly表格的列宽不正确
【发布时间】: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


【解决方案1】:

您的收藏中可能已经有现有的 ColumnStyles。设置 ColumnCount 不会重置该集合。在添加新的之前将其清除:

tableLayoutPanel.ColumnStyles.Clear();
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 10F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 60F));
tableLayoutPanel.ColumnStyles.Add(new ColumnStyle(SizeType.Percent, 30F));

【讨论】:

  • 但是,当我不拖放表格布局面板时。我创建 TableLayoutPanel tblpTable = new TableLayoutPanel(); -> Form1 不显示任何内容。那为什么呢?
  • @Linh 如前所述,当您在设计器视图中拖放控件时,它会为您创建行和列。当您以编程方式创建它时,就像在您的评论中一样,它不会。
猜你喜欢
  • 2012-04-08
  • 1970-01-01
  • 2018-01-08
  • 2016-06-28
  • 2011-10-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多