在 TableLayout 中隐藏一行

Hide a row in TableLayout

我有一个包含三行一列的 table 布局:

我想要的是在进度完成之前隐藏第二行,像这样:

在网上,我发现了两件事:

  1. 删除行 - 我不想删除行,只是暂时隐藏它!
  2. 将行高设置为 0 - 无效,出于某种原因,部分内部数据仍然可见。

那么我如何真正隐藏该行。不是删除,不是调整大小,而是实际上隐藏它。

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;

由于末尾有一个自动调整大小的行,所有其他行都会向上移动,并且您的表单底部将有空 space。这将保留您想要的布局。操作完成后,您可以将相关行设置回 PercentAutoSize.

如果 table 布局行大小样式是自动调整 show/hide 行为可以通过将行内容(例如,groupbox)的可见 属性 设置为 true 或 false 来实现.

正如赵杰所说

如果您所有的行样式都将 SizeType 属性 设置为 Absolute,但您要隐藏的行样式设置为 AutoSize,您只需要要做的是在行样式内的每个控件中将 属性 Visible 设置为 False

在我的例子中,我的 TableLayoutPanel 有三列。

See example

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