在 WinForms 中修改停靠布局
Posted
技术标签:
【中文标题】在 WinForms 中修改停靠布局【英文标题】:Modify docking layout in WinForms 【发布时间】:2013-07-10 21:05:01 【问题描述】:我的表单上有一个SplitContainer
,其 Dock 属性设置为 Fill。它包含几个子控件,其中许多都附加了事件处理程序。后来我决定在我的表格底部放一个StatusStrip
。你猜怎么着,我无法将StatusStrip
设置为停靠在我的表单底部。 SplitContainer
将继续填写整个表格。尽管StatusStrip
显然停靠在底部,但它实际上隐藏了SplitContainer
的底部部分。
唯一的方法是剪切SplitContainer
,然后将其粘贴回去。剪切SplitContainer
使StatusStrip
成为我表单上的唯一控件,从而让它捕获底部停靠。之后,粘贴SplitContainer
使其填充剩余区域。总之,对接采用先到先服务的方式。
现在,由于我的控件附加了许多事件处理程序,因此剪切和粘贴对我来说是一场噩梦。在 C# 中拥有我的项目意味着我必须手动附加所有这些事件处理程序。
有更好的解决方法吗?
【问题讨论】:
【参考方案1】:这是拆分器和状态条之间的 z 顺序问题。当您有一个要停靠填充的控件和一个或多个要停靠顶部、左侧、右侧或底部的控件时,您必须让填充控件位于 z 顺序中的第一个。
更好的方法是打开 Document Outline 工具,选择 SplitContainer 并使用向上或向下按钮更改其 z 顺序。
我应该补充一点,在 Winforms 中,z 顺序由您将控件添加到 Controls 集合的顺序指定。该顺序决定了相关系统控件的创建顺序,因此决定了它们的 z 顺序。使用 Document Outline 工具更改 z-order 只会导致生成的代码重新排序。
【讨论】:
正是我需要的。非常感谢。以上是关于在 WinForms 中修改停靠布局的主要内容,如果未能解决你的问题,请参考以下文章
使用自定义 WinForms 控件,我可以更改嵌套控件停靠在里面的矩形吗?
winforms - 表单加载期间带有dockstyle填充的用户控件大小不正确