在 TableLayout 中隐藏一行
Hide a row in TableLayout
我有一个包含三行一列的 table 布局:
我想要的是在进度完成之前隐藏第二行,像这样:
在网上,我发现了两件事:
- 删除行 - 我不想删除行,只是暂时隐藏它!
- 将行高设置为 0 - 无效,出于某种原因,部分内部数据仍然可见。
那么我如何真正隐藏该行。不是删除,不是调整大小,而是实际上隐藏它。
在 TableLayoutPanel
中隐藏和显示行并不是很简单。
根据您的 UI 模拟,我假设第一行和第三行设置为 Absolute
,而第二行设置为 AutoSize
或 Percent
。我还假设面板的 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。这将保留您想要的布局。操作完成后,您可以将相关行设置回 Percent
或 AutoSize
.
如果 table 布局行大小样式是自动调整 show/hide 行为可以通过将行内容(例如,groupbox)的可见 属性 设置为 true 或 false 来实现.
正如赵杰所说
如果您所有的行样式都将 SizeType
属性 设置为 Absolute
,但您要隐藏的行样式设置为 AutoSize
,您只需要要做的是在行样式内的每个控件中将 属性 Visible
设置为 False
。
在我的例子中,我的 TableLayoutPanel 有三列。
See example
label1.Visible = false;
label2.Visible = false;
label3.Visible = false;
我有一个包含三行一列的 table 布局:
我想要的是在进度完成之前隐藏第二行,像这样:
在网上,我发现了两件事:
- 删除行 - 我不想删除行,只是暂时隐藏它!
- 将行高设置为 0 - 无效,出于某种原因,部分内部数据仍然可见。
那么我如何真正隐藏该行。不是删除,不是调整大小,而是实际上隐藏它。
在 TableLayoutPanel
中隐藏和显示行并不是很简单。
根据您的 UI 模拟,我假设第一行和第三行设置为 Absolute
,而第二行设置为 AutoSize
或 Percent
。我还假设面板的 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。这将保留您想要的布局。操作完成后,您可以将相关行设置回 Percent
或 AutoSize
.
如果 table 布局行大小样式是自动调整 show/hide 行为可以通过将行内容(例如,groupbox)的可见 属性 设置为 true 或 false 来实现.
正如赵杰所说
如果您所有的行样式都将 SizeType
属性 设置为 Absolute
,但您要隐藏的行样式设置为 AutoSize
,您只需要要做的是在行样式内的每个控件中将 属性 Visible
设置为 False
。
在我的例子中,我的 TableLayoutPanel 有三列。
See example
label1.Visible = false;
label2.Visible = false;
label3.Visible = false;