C# 锚固-使两个部件各占面板的一半

C# 锚固-使两个部件各占面板的一半,c#,winforms,user-interface,.net-4.0,anchor,C#,Winforms,User Interface,.net 4.0,Anchor,我所拥有的: 我有一个面板(空白)和两个由绿色和蓝色方块表示的DataGridView。面板固定在屏幕的大部分中央,并随窗口大小而增大/缩小 我需要什么: 我希望绿色广场永远保持在屏幕中间的右边边框,并占据屏幕的左半部。同样地,我希望蓝色的正方形保持在中间的左边边框,并占据屏幕的右半边。 基本上,我只是希望它始终像这张图片一样。 我需要做这个程序吗?我似乎找不到锚定或停靠的组合来实现这一点,而添加更多面板作为容器最终也会产生同样的问题 我通常使用a来实现这一点。它很容易使用(可以找到一个简单的介

我所拥有的:

我有一个面板(空白)和两个由绿色和蓝色方块表示的DataGridView。面板固定在屏幕的大部分中央,并随窗口大小而增大/缩小

我需要什么:

我希望绿色广场永远保持在屏幕中间的右边边框,并占据屏幕的左半部。同样地,我希望蓝色的正方形保持在中间的左边边框,并占据屏幕的右半边。

基本上,我只是希望它始终像这张图片一样。

我需要做这个程序吗?我似乎找不到锚定或停靠的组合来实现这一点,而添加更多面板作为容器最终也会产生同样的问题

我通常使用a来实现这一点。它很容易使用(可以找到一个简单的介绍)


您可以在第一行中创建单元格,并将其设置为每个单元格宽度的50%。在每个单元格中放置一个
数据网格
,并将其
停靠设置为
填充
不确定这是否是您想要的:

  • 在屏幕上创建拆分容器

    Anchor=顶部、底部、左侧、右侧
    IsSplitterFixed=True(技巧)
    
  • 创建另外两个DataGridView,每个视图位于SplitterContainer内的一侧

    Dock=Fill
    

  • 我尝试了TableLayoutPanel的解决方案,效果不错

    但是,如果您想使用不同的定位,那么在TableLayoutPanel中进行布局有点不方便和受限

    我找到了另一个解决方案,它只需要一点编程工作:

    • 对于左侧项目,定义向左定位
    • 对于右侧项目,定义无左/右锚定
    这将导致在调整表单大小时,左侧项目保留在其位置,右侧项目移动到中间位置

    我在表单中添加了一个OnSizeChanged处理程序,它实现了以下几行:

    int widthForItem = Item2.Left - Item1.Left; // you can subtract a distance here
    Item1.Width = widthForEachItem;
    Item2.Width = widthForEachItem
    

    不,如果你这样做的话,绿色和蓝色的方块会重叠,因为它们会拉伸得越来越大,但从左/右方向看,它们的像素宽度会保持不变。不过谢谢:)一旦我有时间试一下,效果就很好:)谢谢。我甚至没有想到要专门为这种情况寻找一个容器p谢谢。我更喜欢这个解决方案。与使用SplitContainer相比,它感觉更轻松,更易于根据您的喜好进行配置。