【问题标题】:WinForms: Proper way to change number of rows in a TableLayoutPanelWinForms:更改 TableLayoutPanel 中行数的正确方法
【发布时间】:2008-10-27 13:50:46
【问题描述】:

我正在尝试以编程方式更改 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);

}

第二个断言失败。

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);
}

第二个断言失败。

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

【问题讨论】:

  • @TheBlastOne 不; Stilll "关闭为推迟"

标签: .net winforms desktop-application


【解决方案1】:

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

TableLayoutPanel Rows and RowStyles do not correspond.

说明

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

评论

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

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

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

Microsoft 子状态现在是 “转载”

感谢您报告此错误,我们有 能够重现这个问题并且是 调查。

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

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

感谢您报告此问题。 这是我们运行时的一个特点 不翻译的对象模型 好设计时间。在运行时 RowCount 和 ColCount 的真正含义 minRowCount 和 minColCount 的术语 自动增长,因为行/列不 需要一个支持的风格。设计时 时间我们试图简化它并保持 之间接近 1:1 的对应关系 样式和行/列。在这种情况下, 您在设计运行时看到 行为。我们已经有一个错误 跟踪此问题,并且仍在 在这里评估我们的选择。谢谢 再次为更好的贡献 惠德比。

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

谢谢你 报告这个问题。这是一个 我们的运行时对象的特殊性 我们选择不使用的模型 设计时的地址。在运行时 RowCount 和 ColCount 的真正含义 minRowCount 和 minColCount 的术语 自动增长,因为行/列不 需要支持风格。设计时 时间我们通常会尝试简化 并保持接近 1:1 的对应关系 在样式和行/列之间。在里面 表格上的 rowSpan 或 colSpan 的情况 带有自动增长功能的layot面板,您可以获得 进入一种状态 行/行数/行样式超出 同步。为避免这种情况,只需添加 您首先需要的列/行,然后设置 控件 *span 属性。谢谢。

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

这个问题已被重新激活,因为我们 开始计划下一个版本 视觉工作室。在接下来的几个月里 我们将重新考虑以前的反馈 之前推迟了。我们欢迎您的 cmets 和参与此 过程。

-- Visual Studio 团队

【讨论】:

  • 我在该网站上看到的每个页面最终都没有响应或“呃……也许稍后”
【解决方案2】:

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

【讨论】:

  • 这不起作用。假设:从两行开始,然后添加两种样式,最终会得到六行。
猜你喜欢
  • 1970-01-01
  • 2010-11-11
  • 1970-01-01
  • 2011-01-12
  • 1970-01-01
  • 1970-01-01
  • 2020-08-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多