如何停靠在顶部和左侧

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.TopDockStyle.Left 基本上会给你DockStyle.Fill。 IE。与容器相同的宽度

【讨论】:

谢谢 Gtt,这解释了我所看到的。一旦我弄清楚如何表达它,我可能不得不就我想要实现的目标提出另一个问题! 没问题。我已经经历了对接和锚定自己的所有痛苦,所以我会留意下一个问题。【参考方案3】:

Dock 是预先确定的锚集,而 Anchor 是自定义停靠配置。

DockStyle.TopAnchor = (AnchorStyles.Top | AnchorStyles.Left | AnchorStyles.Right) 相同,只是锚点可以位于任何初始位置,并且停靠点将移动到远端。

【讨论】:

它们有点相似,但又不一样。锚定允许您设置远离容器边缘的位置。停靠强制停靠的控件到指定的边缘。 IE。左 = 0。上 = 0。 @GenericTypeTea 我在回答中确实说过这个 所以你做到了。抱歉,我显然没有正确阅读。【参考方案4】:

DockStyle 只能设置为一个值,而 Anchor 可以设置为多个值。

这就是为什么有 Anchor 属性,以便您可以更具体地调整控件对表单大小调整的反应。

【讨论】:

这是对的,但是这种对接限制的原因是什么,有没有办法绕过呢? 我不知道具体原因,我认为 Dock 只是为了简单、轻松地停靠控件,并且不能使用多个控件(例如,你不能有停靠样式填充并且没有) 所以这就是为什么还有 Anchor。

以上是关于如何停靠在顶部和左侧的主要内容,如果未能解决你的问题,请参考以下文章

如何在面板上预览顶部停靠控件下方插入顶部停靠控件

QMdiArea 子窗口中的 QDockWidget 不能停靠在顶部和底部

C# WPF - 顶部和底部停靠但可扩展的中间部分

如何限制可拖动区域?它在顶部和左侧起作用,但在右侧和底部不起作用

如何从左侧而不是从顶部滑动导航栏?

如何删除 Android Checkbox 的内部图像填充(顶部、左侧和底部)