2

我正在尝试以编程方式更改TableLayoutPanel中的行数(有时需要为四,有时为五,很少为六)。

不幸的是,更改行数不会使RowStyles集合保持同步,因此您无法设置新添加行的高度。以下测试代码证明了这一事实:

private void button1_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot remove rows
    tableLayoutPanel1.RowCount = 1;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

}

第二个断言失败。

private void button2_Click(object sender, EventArgs e)
{
    //TableLayoutPanels start with 2 rows by default.
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);

    //Cannot add rows
    tableLayoutPanel1.RowCount = 6;
    Debug.Assert(tableLayoutPanel1.RowStyles.Count == 
            tableLayoutPanel1.RowCount);
}

第二个断言失败。

那么设置RowCounta 属性的正确编程方式是TableLayoutPanel什么?

4

2 回答 2

7

这个问题在 2005 年被报告给微软,他们承认这是一个错误,但他们“仍在评估我们的选项微软决定不修复它(“关闭”)。

TableLayoutPanel Rows 和 RowStyles 不对应。

描述

当您创建 tableLayoutPanel 并创建新行时(通过在程序中添加行或设置 RowCount 属性),新的 RowStyles 不会添加到控件中。此外,如果我添加新的行样式,行数会增加,但不会增加到相同的数量:如果我从两个行和两个行样式开始,将行数设置为 4,然后添加两个行样式(在设计视图中), Rowcount 已设置为 6。RowStyles 集合的序数与当前 RowCount 匹配似乎更直观。

注释

Microsoft 于 2005 年 10 月 24 日下午 6:07 发布

当我们开始计划下一个版本的 Visual Studio 时,此问题已被重新激活。在接下来的几个月里,我们将重新考虑之前被推迟的反馈。我们欢迎您的意见和参与这个过程。

Microsoft 于 2005 年 6 月 27 日上午 6:49 发布

Microsoft 子状态现在是“复制”

感谢您报告此错误,我们已经能够重现此问题并正在调查。

谢谢你,Prabhu,VS2005 产品团队。

Microsoft 于 2005 年 6 月 27 日下午 5:55 发布

感谢您报告此问题。这是我们的运行时对象模型中的一个特性,它不能很好地转化为设计时。在运行时,RowCount 和 ColCount 在自动增长方面实际上意味着 minRowCount 和 minColCount,因为行/列不需要支持样式。在设计时,我们尝试简化它并在样式和行/列之间保持接近 1:1 的对应关系。在这种情况下,您看到的是设计运行时行为。我们已经有一个跟踪此问题的错误,并且仍在评估我们的选项。再次感谢您为更好的 Whidbey 做出贡献。

Microsoft 于 2005 年 7 月 6 日下午 3:43 发布

感谢您报告此问题。这是我们在设计时选择不解决的运行时对象模型中的一个特性。在运行时,RowCount 和 ColCount 在自动增长方面实际上意味着 minRowCount 和 minColCount,因为行/列不需要支持样式。在设计时,我们通常会尝试简化它并在样式和行/列之间保持接近 1:1 的对应关系。在带有自动增长的表格布局面板上的 rowSpan 或 colSpan 的情况下,您可能会进入行/行数/行样式不同步的状态。为避免这种情况,只需先添加您需要的列/行,然后设置控件的 *span 属性。谢谢。

Microsoft 于 2005 年 10 月 24 日下午 6:07 发布

当我们开始计划下一个版本的 Visual Studio 时,此问题已被重新激活。在接下来的几个月里,我们将重新考虑之前被推迟的反馈。我们欢迎您的意见和参与这个过程。

-- Visual Studio 团队

于 2008-10-27T14:49:57.830 回答
0

您是否尝试过创建一个新的RowStyle然后使用该tableLayoutPanel1.RowStyles.Add方法添加它?

于 2008-10-27T14:10:55.863 回答