.net 在TableLayout中隐藏行

y1aodyip  于 2023-03-13  发布在  .NET
关注(0)|答案(4)|浏览(265)

我有一个包含三行和一列的表格布局:

我想要的是在进度完成之前隐藏第二行,如下所示:

在网上,我发现了两件事:
1.删除行-我不想删除行,只是暂时隐藏它!
1.将行高设置为0 -不起作用,由于某些原因,部分内部数据仍然可见。
那么我如何真正隐藏行呢?不是删除,不是调整大小,而是实际上从视图中隐藏它。

cuxqih21

cuxqih211#

TableLayoutPanel中隐藏和显示行实际上并不简单。
根据您的UI模拟,我假设第一行和第三行设置为Absolute,而第二行设置为AutoSizePercent。我还假设面板的Dock设置为Fill
在末尾添加一个空行,将SizeType设置为AutoSize。当用户操作开始时(比如单击按钮),执行以下操作:

// RowStyles index is index of the row you are dealing with
tableLayoutPanel1.RowStyles[1].SizeType = SizeType.Absolute;
tableLayoutPanel1.RowStyles[1].Height = 0;

因为最后有一行是自动调整大小的,所以所有其他行都将上移,表单底部将有空白。这将保留您想要的布局。当操作完成时,您可以将有问题的行设置回PercentAutoSize

qxsslcnc

qxsslcnc2#

如果表格布局行大小样式是自动调整大小,则可以通过将行内容的visible属性(例如,groupbox)设置为true或false来实现显示/隐藏行为。

wljmcqd8

wljmcqd83#

正如赵洁所说。
如果所有行样式的SizeType属性都设置为Absolute,但要隐藏的行样式设置为AutoSize,则只需在行样式内的每个控件中将Visible属性设置为False
在我的示例中,TableLayoutPanel有三列。
See example

label1.Visible = false;
label2.Visible = false;
label3.Visible = false;
hmmo2u0o

hmmo2u0o4#

不知何故丹麦的建议是不工作的罚款。仍然有可见的控件,取决于风格-复选框“clasic”消失,同时“框”风格是有点可见。文本框是可见的“隐藏”行,如果你删除两行,只有那么一个文本框是隐藏的。
是的,还有额外的自动调整行和列的空单元格。x1c 0d1x
所以,唯一合适的办法就是把孩子藏起来:

For i = 0 To My_Table_layout_panel.Controls.Count - 1
                    If My_Table_layout_panel.GetRow(My_Table_layout_panel.Controls(i)) = LAST_RAM_ROW Then
                        My_Table_layout_panel.Controls(i).Hide()
                    End If
                Next

或向他们展示:

For i = 0 To My_Table_layout_panel.Controls.Count - 1
                    If My_Table_layout_panel.GetRow(My_Table_layout_panel.Controls(i)) = LAST_RAM_ROW Then
                        My_Table_layout_panel.Controls(i).Show()
                    End If
                Next

现在它的工作原理就像一个魅力。LAST_RAM_ROW只是要隐藏的行。

相关问题