【问题标题】:Are the Anchor and Dock properties mutually exclusive in WinForms?WinForms 中的 Anchor 和 Dock 属性是否互斥?
【发布时间】:2016-08-04 07:22:01
【问题描述】:

看来Dock属性可以用acnhoring来实现,比如listBox.Dock = DockStyle.Left;就相当于(在我的小测试项目中):

listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom;
listBox.Height = form.ClientSize.Height;

此外,您可以将 Anchor 设置为 AnchorStyles.Right,这将与 DockStyle.Left 相矛盾。

所以我做了一些测试,似乎更改 Dock 会重置 Anchor,反之亦然:

Action Print = ()=>Console.WriteLine("Anchor: " + listBox.Anchor + ";; Dock: " + listBox.Dock);
listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Bottom;
Print();
listBox.Dock = DockStyle.None;
Print();
listBox.Dock = DockStyle.Right;
Print();
listBox.Anchor = AnchorStyles.Left | AnchorStyles.Top;
Print();
listBox.Anchor = AnchorStyles.Left;
Print();

这是输出:

锚点:上、下、左;;码头:无
锚点:上、下、左;;码头:无
锚点:顶部,左侧;;码头:对
锚点:顶部,左侧;;码头:对
锚点:左;;码头:无

所以我假设这意味着AnchorDock 是互斥的,并且仅当Dock 属性设置为None 时才考虑Anchor 属性。

对吗?

【问题讨论】:

  • 你能提出现实场景(在布局方面)你会同时使用两者吗?
  • @Sinatr 考虑一个带有 Dock: 底部的面板。调整表单大小时,面板应该保持大小还是移动?
  • @Luaan,是的,我明白了。对接就像 sticking 到一侧(在垂直方向上保持绝对大小)。如果你想停靠在一侧垂直调整大小,那么你必须用锚定替换停靠。实际上停靠就是锚定。然而,停靠更舒适,因为要锚定,您必须先定位/调整大小,然后再应用锚点,而使用停靠点会自动神奇地定位、调整大小和“锚定”。从这开始,当你停靠时 - 你已经使用了一些锚点(不再可能使用它们)。
  • @Sinatr 是的。不过,我仍然更喜欢在 Delphi 中处理对接的方式——它更流畅,更容易理解 IMO。带到前面来改变对接的工作方式?让我休息一下。我理解技术上为什么会这样,但这只是笨拙。一旦你完美理解了winforms中的对接模型,让它做你想做的事情并不难,但它并不完全直观:)
  • @Sinatr 我无法呈现一个真实的场景。出于好奇,我只是想知道事情是如何运作的。我希望这不是问题。

标签: c# winforms


【解决方案1】:

它们确实是排他性的。在属性面板中,当您停靠控件时,它会忘记锚设置,而当您锚定它时,它会忘记停靠设置。 但是,在某些情况下,您可能需要将两者结合使用。 假设您有一个隐藏的底部停靠进度条,您希望在执行长任务时将底部停靠的 datagridview 向上推。 但是您希望在显示进度条时保留 datagridview 顶部锚点。 解决方案是在锚定面板中放置一个底部停靠的进度条和一个完全停靠的 datagridview(按此顺序)。

【讨论】:

    【解决方案2】:

    从逻辑上讲,同时使用它们没有任何意义。 Anchor 说“与指示的边缘保持这个距离”,而 Dock 说“填充该边缘上的所有空间”。

    【讨论】:

    • 谢谢,这是否意味着它们在框架实现时是互斥的?我之所以问,是因为我找不到有关该主题的任何文档。
    • 如果没有记录,那么行为是未定义的,你不能依赖它。您必须反编译源代码或进行实验才能找出所有可能的组合。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-10
    • 1970-01-01
    • 1970-01-01
    • 2018-11-25
    • 2014-12-22
    • 1970-01-01
    相关资源
    最近更新 更多