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#
使用 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#