【问题标题】: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)来获得所需的布局。使用这些元素,您可以构建各种布局,这些布局可以很好地随表单/控件的大小进行缩放。因此,如果您提供有关您希望在布局中实现什么的更多信息,我相信我们可以找到解决方案。

标签: c# panel anchor docking


【解决方案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。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-06-14
    • 1970-01-01
    • 1970-01-01
    • 2021-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多