是)我有的:
我有一个面板(空白区域)和两个由绿色和蓝色方块表示的 DataGridView。面板固定在我屏幕的大部分中心,并随着窗口大小而增大/缩小。
我需要的:
我希望绿色方块始终保持在屏幕中间的右边框并占据屏幕的左半部分。同样,我希望蓝色方块的左边框位于中间并占据屏幕的右半部分。
基本上,我只是希望它始终看起来像这个图像。
我需要以编程方式执行此操作吗?我似乎找不到可以实现这种情况的锚定或对接组合,并且添加更多面板作为容器最终会产生相同的问题。
是)我有的:
我有一个面板(空白区域)和两个由绿色和蓝色方块表示的 DataGridView。面板固定在我屏幕的大部分中心,并随着窗口大小而增大/缩小。
我需要的:
我希望绿色方块始终保持在屏幕中间的右边框并占据屏幕的左半部分。同样,我希望蓝色方块的左边框位于中间并占据屏幕的右半部分。
基本上,我只是希望它始终看起来像这个图像。
我需要以编程方式执行此操作吗?我似乎找不到可以实现这种情况的锚定或对接组合,并且添加更多面板作为容器最终会产生相同的问题。
不确定这是否是您想要的:
在屏幕上创建一个 SplitContainer。
Anchor = Top, Bottom, Left, Right
IsSplitterFixed = True (Trick)
创建另外两个数据网格视图,每个视图在 SplitterContainer 内
Dock = Fill
我通常使用 aTableLayoutPanel
来完成此操作。它非常易于使用(简单的介绍可以在这里找到)。
您在第一行中创建单元格并将其设置为每个单元格的 50% 宽度。在每个单元格中放置一个DataGrid
,然后将它们Dock
的 'ing 设置为Fill
.
我尝试了使用 TableLayoutPanel 的解决方案,效果很好。
但是,如果您想使用不同的定位,TableLayoutPanel 内部的布局有点不方便且受到限制。
我找到了另一个解决方案,它只需一点编程工作即可完成:
这会导致在调整表单大小时左侧项目保留在其位置,而右侧则在中间位置移动。
我在表单中添加了一个 OnSizeChanged 处理程序,它实现了以下几行:
int widthForItem = Item2.Left - Item1.Left; // you can subtract a distance here
Item1.Width = widthForEachItem;
Item2.Width = widthForEachItem