如何在Winform中垂直放置两个DatagridView?

时间:2015-10-15 16:04:51

标签: c# winforms datagridview

我想在Winform中垂直放置两个DataGridViews(自动绑定)及其标签。所以它应该适合在区域内看起来很好。

它应按以下顺序显示: DataGridView Label1 DataGridView1 DataGridView Label2 DataGridView2

https://github.com/kikito/inspect.lua

它应该自动调整Scroll并最大化行为。我尝试过Panels和FlowLayoutPanel,但没有成功。我知道如何在WPF中使用相对布局,但不知道如何在winform中做。

2 个答案:

答案 0 :(得分:2)

问题似乎主要是保持两个DGV的大小同步。

为此,您可以使用SplitContainer,它会自动执行此操作:

  • 设置Orientation = Orientation.Horizontal
  • 设置IsSplitterFixed = true
  • FixedPanel设为None
  • 根据自己的喜好设置Anchors,也可以设置为所有四个方面
  • 将两个DataGridViews放入两个SplitContainer.Panels
  • 两个DGV到Dock=Fill

现在两个DGV将保持相同的大小,平均分配SplitContainer大小,或者与原始比率保持精确。

如果您希望Labels位于每个DGV上方,只需将它们放置到位,但Dock=Fill的实例为DGV选择四个Anchors

如果您希望Buttons保持在SplitContainer简单Anchoring之下,那么......

请注意,通过嵌套更多此类SplitContainers,您可以保持三个或更多Controls同步相同的大小。

答案 1 :(得分:0)

我使用TableLayoutPanel控件解决了这个问题。 创建了四行:

Row1:SizeType:绝对值:20

行2:的SizeType:自动调整大小

Row3:SizeType:绝对值:20 ROW4:的SizeType:自动调整大小

和 DatagridView1.AutoSize = true; DatagridView2.AutoSize = true;

tableLayoutPanel1.AutoScroll = TRUE;

现在,它根据DataGridViewRows的不同大小自动调整Scroll并最大化行为

感谢LarsTech和TaW以及其他人的支持!!