从底部调整大小时防止 Windows 表单元素离开视图?

Prevent Windows form elements from leaving view when resizing from the bottom?

我有一个表格设置如下图所示。该表单仅包含一个 SplitContainer,每个面板中有两个 TreeView,以及 TreeView 上方的标签。

这是一张尚未调整大小的表格图片:

每个 TreeView 都锚定在顶部和左侧,并停靠在底部。 每个标签都固定在顶部和左侧。 SplitContainer 锚定在底部、左侧和右侧。

以上设置允许我在调整表单大小时同样调整 TreeViews 的大小。但是,当我调整表单的高度时,标签(当然还有 TreeViews)被推出表单视图,如下图所示:

如何防止元素被推过标题栏?最好不使用 SizeChanged 事件。我试过向表单添加填充,以及尝试不同的 docking/anchor 模式,但我一直无法限制它。

设置SplitContainer.Dock=DockStyle.Fill;如果那是唯一出现在表格上的东西。

按顺序执行以下步骤:

  1. SplitContainer 锚定到所有 4 个边或停靠填充它。
  2. 将标签放在面板上。使它们小于面板,以确保它们真正成为面板(而不是窗体)的子控件。将他们的 Dock 属性 设置为 Top.
  3. TreeViews 放在面板上。在放置和停靠标签后完成此操作很重要!同样的事情:让它们比面板小。然后将他们的 Dock 属性 设置为 Fill.

注意:您可以停靠或锚定一个控件,但不能两者兼而有之!如果 Dock 不是 NoneAnchor 属性 将被忽略。锚定的边缘与其锚定的一侧保持恒定的距离。如果一条边没有被锚定,该方向上的控件大小将保持不变。如果两个对应的边缘(例如左和右)没有锚定,那么控件将在这个方向居中。

参见:Manage WinForm controls using the Anchor and Dock properties