如何停靠在顶部和左侧
Posted
技术标签:
【中文标题】如何停靠在顶部和左侧【英文标题】:How to dock to the top and the left 【发布时间】:2011-03-27 07:45:57 【问题描述】:有了一个锚,我可以写出下面这行:
myControl.Anchor = (AnchorStyles.Top | AnchorStyles.Left);
它会将myControl
锚定在左侧和顶部。
为什么我不能执行以下操作:
myControl.Dock = (DockStyle.Top | DockStyle.Left);
我可以写上面的行,但它所做的只是将DockStyle
设置为左侧。
对此有何想法/理由?
【问题讨论】:
我认为您只是没有完全理解如何使用停靠、锚点和某种容器控件(如 TableLayoutPanel)来获得所需的布局。使用这些元素,您可以构建各种布局,这些布局可以很好地随表单/控件的大小进行缩放。因此,如果您提供有关您希望在布局中实现什么的更多信息,我相信我们可以找到解决方案。 【参考方案1】:您正在寻找的可能是Anchor
属性:
myControl.Anchor = AnchorStyles.Bottom | AnchorStyles.Right
【讨论】:
【参考方案2】:您不能这样做的原因是因为设置 DockStyle
基本上会停靠/填充指定边缘的整体。
例如,DockStyle.Left
表示停靠的项目的高度将始终是容器的高度,并且 X、Y 位置将始终为 0、0。
DockStyle.Top
表示item的宽度永远是容器的宽度,位置永远是0,0。
设置DockStyle.Top
和DockStyle.Left
基本上会给你DockStyle.Fill
。 IE。与容器相同的宽度和。
【讨论】:
谢谢 Gtt,这解释了我所看到的。一旦我弄清楚如何表达它,我可能不得不就我想要实现的目标提出另一个问题! 没问题。我已经经历了对接和锚定自己的所有痛苦,所以我会留意下一个问题。【参考方案3】:Dock
是预先确定的锚集,而 Anchor
是自定义停靠配置。
DockStyle.Top
与Anchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right)
相同,只是锚点可以位于任何初始位置,并且停靠点将移动到远端。
【讨论】:
它们有点相似,但又不一样。锚定允许您设置远离容器边缘的位置。停靠强制停靠的控件到指定的边缘。 IE。左 = 0。上 = 0。 @GenericTypeTea 我在回答中确实说过这个 所以你做到了。抱歉,我显然没有正确阅读。【参考方案4】:DockStyle
只能设置为一个值,而 Anchor
可以设置为多个值。
这就是为什么有 Anchor
属性,以便您可以更具体地调整控件对表单大小调整的反应。
【讨论】:
这是对的,但是这种对接限制的原因是什么,有没有办法绕过呢? 我不知道具体原因,我认为 Dock 只是为了简单、轻松地停靠控件,并且不能使用多个控件(例如,你不能有停靠样式填充并且没有) 所以这就是为什么还有 Anchor。以上是关于如何停靠在顶部和左侧的主要内容,如果未能解决你的问题,请参考以下文章
QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部