C#TableLayoutPanel - 未显示第2行内容

时间:2016-06-14 09:35:23

标签: c# forms user-controls tablelayoutpanel

我有一个显示对象的用户控件。该用户控件由以下内容组成:

- A main TableLayoutPanel with 2 rows to separate things in two parts
    - A nested TableLayoutPanel containing a "header"
        - A label for the name of the object
        - Several buttons...
    - A second nested TableLayoutPanel containing the members of the object
        - Dynamically added user controls...

所有这些控件,行和列都处于AutoSize模式。

表示对象的此用户控件基于JSON文件进行初始化。将子项(即JSON对象的属性)动态添加到第二个嵌套的TableLayoutPanel中。

我不打算提供整个代码,因为阅读时间太长,但是这样添加了儿童:

propertiesTableLayoutPanel.Controls.Add(memberView, 0, propertiesTableLayoutPanel.RowCount - 1);
++propertiesTableLayoutPanel.RowCount;

基本上我总是保持空行。添加子项时,我将其放入此空行,然后通过递增行计数来创建另一个空行。我这样做是为了在添加新行时复制行的样式,但我不确定这是否真的需要。

我的问题是,由于某种未知原因,第二个子用户控件(索引= 1)永远不会显示。它始终是第二个。显示该行,但它似乎是空的。第一个(索引= 0)和以下(索引> 2)正确显示。

我通过调试和记录确保所有子用户控件都正确放置在第二个嵌套的TableLayoutPanel中,并且他们的Visible属性设置为true ,但它没有似乎已经足够了。

我错过了关于款式或其他什么的东西吗?谢谢。

编辑:可能需要对RowStyles执行某些操作,可能还需要行高。当我只有一行时,似乎已经有两种行样式,这很奇怪。

编辑:无论如何,使用AutoSize模式时似乎没有使用行高。

1 个答案:

答案 0 :(得分:0)

修复此处:stackoverflow.com/questions/37808238/ 是由于设计师留下的垃圾。一个额外的RowStyle,不应该在那里,可以安全地手动删除。