如何将子控件停靠在父控件的右下角?

Posted

技术标签:

【中文标题】如何将子控件停靠在父控件的右下角?【英文标题】:How to dock a child control to bottom right of the parent control? 【发布时间】:2012-05-31 04:15:24 【问题描述】:

与父控件相比,如何将子控件停靠在右下位置?

我可以看到 dockstyle 枚举的值 无、上、下、右、左和填充...

如何设置右下角???

【问题讨论】:

我们在这里处理什么样的控制?父母和孩子都请。 【参考方案1】:

也许您不想将其停靠在右下角。停靠会改变控件的位置,但也会改变大小以适应表单的高度或宽度。

如果您想让它保持在右侧和下方,请将其锚定。移除左侧和顶部锚点并添加底部和右侧锚点。您的控制权将保留在那里!

** 编辑 ** 根据OP评论,它必须在底部并占据所有宽度并具有固定高度。那么你必须采取以下步骤:

为了保持整洁,您至少需要 2 个控件:

位于底部的那个:将其停靠到底部并设置其高度。 另一种使用对接样式的填充。这使它占据了底部控件未占用的所有空间。

如果您在设置它时遇到问题,请使用布局窗口(我希望这是英文名称。我的 VS 已本地化)移动它们直到它工作。有时停靠它有点讨厌,让它按照您喜欢的方式工作的唯一方法是使用此布局窗口更改控件的顺序和嵌套。

【讨论】:

这正是我想要的。我需要子控件适合父窗体的高度和宽度...如果我将锚样式设置为右下角,我无法看到控件,我猜测它超出了父控件的范围...。 请更准确地定义它。你想要它在底部,占据所有宽度还是在右侧占据所有高度?如果你帮助我理解它,我会改进我的答案。 我相信 JotaBe 是正确的,您需要将锚点设置在右下角并将其准确定位到您希望它停留的位置,当您调整表单大小时,它将相对于右下角保持不动跨度> 我希望它在右边,占据父控件的所有宽度,但应该能够定义高度... 然后停靠到底部,这将占用父控件的所有宽度才能定义高度,但是您要添加的控件是什么,您可能必须将 AutoSize=false 跨度> 【参考方案2】:

使用锚样式:

yourComponent.Anchor = ((System.Windows.Forms.AnchorStyles)
                       ((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Right)));

【讨论】:

【参考方案3】:

来自MSDN documentation 为Control.Dock

控件可以停靠在其父容器的一个边缘,也可以停靠在 停靠到所有边缘并填充父容器。

所以你不能停靠到两个边缘 - 我实际上不确定你的意思。

如果您想在屏幕的右下角保留一个控件,您可能会想到Anchor property,它可以让您设置多个边缘来锚定控件。

【讨论】:

Okie.. 感谢您的信息,让我停靠控件底部并将标签字段向右对齐...【参考方案4】:

尝试将 Dock 设置为底部,根据您的控件,您可能需要关闭自动调整大小,例如标签

【讨论】:

【参考方案5】:

要“停靠”在右下角,你需要

    将 ControlA 停靠在父控件 B 的 右侧 侧 将 ControlA 的 Top 填充设置为 ControlA.Padding = new Padding(0, ControlB.Height - nTopPadding, 0, 0);

nTopPadding 可以是你需要的任何东西。对于文本框、标签等,ControlA.Font.Height 效果最好。

这也适用于AutoSize = true。您只需要根据需要更新填充。

【讨论】:

以上是关于如何将子控件停靠在父控件的右下角?的主要内容,如果未能解决你的问题,请参考以下文章

如何使用代码停靠在父容器中

请问wpf中的GroupBox控件我想让他的Header位于右下角,注意是右下角,能实现吗?请详细说明,谢谢!

WPF中如何向Grid右下角添加控件

将子窗口停靠到父窗口

右下角弹窗美化控件----------WinForm控件开发系列

如何在 UWP 中将画布的 x、y 坐标更改为右下角?