Winforms 控件结合了 SplitContainer 和 TableLayoutPanel 的优点

Winforms control combining best of both the SplitContainer and TableLayoutPanel

使用 SplitContainer,用户可以调整控件两侧的大小。但仅限于两节

使用 TableLayoutPanel,您可以拥有无​​限的行和列。遗憾的是,用户无法拖动这些部分中的任何一个。

我怎样才能两全其美? SplitContainer 中中间栏的 'draggable-ness' 以及 TableLayoutPanel 允许的超过 2x1 部分的能力?

如果 Winforms 不允许,也许那里有商业组件?我知道我在一些非 .NET 程序中看到过这种高级控件。

在第一个 SplitContainer 的一半内嵌入另一个 SplitContainer。

请记住,您可以水平拆分也可以垂直拆分。我相信这样可以生成很多整洁的布局。

建立在之上:

嵌入另一个 SplitContainer 后,@Wolf5 提到的唯一缺点是它们不会一起自动调整大小,因此您很快就会失去表格视图。解决方案可能是为每个适用的 SplitContainer 设置一个 SplitterMoved 事件处理程序:

private void mySplitContainer_SplitterMoved(object sender, SplitterEventArgs e) {
  mOtherySplitContainer.SplitterDistance = e.SplitX;
}

如果您的 SplitContainer 是水平的,请使用 e.SplitX,如果是垂直的,请使用 e.SplitY


建议重复此其他问题:Resizable table layout panel in c#