WinForms:更改 TableLayoutPanel 中行数的正确方法

Ian*_*oyd 2 .net desktop-application winforms

我正在尝试以编程方式更改TableLayoutPanel 中的行数(有时需要 4,有时需要 5,很少需要 6)。

不幸的是,更改行数不会使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);

}
Run Code Online (Sandbox Code Playgroud)

第二个断言失败。

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);
}
Run Code Online (Sandbox Code Playgroud)

第二个断言失败。

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

Ian*_*oyd 6

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

TableLayoutPanel Rows 和 RowStyles 不对应。

描述

当您创建 tableLayoutPanel 并创建新行时(通过在程序中添加行或设置 RowCount 属性),不会向控件添加新的 RowStyle。此外,如果我添加新的 Row Styles,行数会增加,但不会增加到相同的数字:如果我从两个 Rows 和两个 RowStyles 开始,将 Rowcount 设置为 4,然后添加两个 RowStyles(在设计视图中), 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 的下一个版本时,此问题已被重新激活。在接下来的几个月里,我们将重新考虑之前被推迟的反馈。我们欢迎您提出意见并参与此过程。

-- 视觉工作室团队

  • 我在该网站上看到的每个页面都没有响应或“呃......也许稍后” (2认同)