使用 Winforms 在 C# 中单独和以编程方式调整选项卡的大小

Resizing tabs individually and programmatically in C# with Winforms

我有一个带有选项卡控件的表单。

我希望每个选项卡都有自己的界面和自己的大小,以便我可以根据需要进行按钮布局。

在这个例子中,我只是改变高度。

目前我设置了默认表单高度和默认选项卡高度(由选项卡索引 0 设置)。

我需要一种编程方式来单独设置每个选项卡的高度,并且在事件 selectedIndexChanged 上,我能够根据需要相对于当前选定的选项卡调整表单的大小,但我不知道如何单独更改每个选项卡的高度。

我怎样才能做到这一点?


听起来您谈论的更多是基于所选选项卡的表单高度,而不是每个单独选项卡项的高度。

假设 TabControl 在父窗体上为 Dock-Filled,您可以尝试使用此代码根据 TabPage 的内容调整窗体的高度:

1
2
3
4
5
6
void tabControl1_SelectedIndexChanged(object sender, EventArgs e) {
  var controls = tabControl1.SelectedTab.Controls.Cast<Control>();
  if (controls.Any()) {
    this.Height = controls.Max(x => x.Bottom) + 72;
  }
}

该例程在 TabPage 上找到基于最低的控件,然后添加一个 72 的忽悠数以解决表单非客户区的高度和其他杂项间距问题。

但请注意,根据选项卡选择不断更改表单的高度可能会令最终用户感到不快,并且可能不被视为流行的 UX 实现。