如何将子控件对齐到父控件的右下角?

3

如何将子控件相对于父控件停靠在右下角位置?

我看到DockStyle枚举有以下值:None、Top、Bottom、Right、Left和Fill ...

如何设置为右下角停靠?


我们在处理什么类型的控件?请同时考虑父控件和子控件。 - General Grey
5个回答

7
也许你不想将它停靠在右下角。停靠改变了控件的位置,同时也会根据表单的高度或宽度改变其大小。
如果你想保持它处于下方和右侧,请使用锚定功能。删除左侧和顶部的锚定,并添加底部和右侧的锚定。这样你的控件就会一直保持在那里!
** 编辑 ** 根据OP评论,它必须位于底部,占据整个宽度并具有固定的高度。然后你需要按照以下步骤进行操作:
为使其整洁,你需要至少两个控件:
- 一个位于底部:将其停靠在底部并设置其高度。 - 另一个使用填充式的停靠方式。这样它就可以占据底部控件未占用的所有空间了。
如果你在设置时遇到问题,请使用布局窗口(我希望这是英文名称,我的VS是本地化的)将它们移动到正确的位置。有时候停靠可能会有些棘手,使其按照你喜欢的方式工作的唯一方法就是通过使用此布局窗口更改控件的顺序和嵌套关系。

这正是我想要的。我需要子控件适应父窗体的高度和宽度...如果我将AnchorStyle设置为右下角,我无法看到控件,我猜测它超出了父控件的边界... - Nick
请更精确地定义它。您想将其放在底部,占据所有宽度还是放在右侧占据所有高度?如果您帮助我理解它,我会改进我的答案。 - JotaBe
我相信JotaBe是正确的,你需要将锚点设置为右下角,并将其定位到你想要它停留的位置,当你调整窗体大小时,它将相对于右下角保持不变。 - General Grey
我希望它在右侧,占据父控件的全部宽度,但应该能够定义高度... - Nick
那么将其停靠到底部,这将占用父控件的所有宽度,并能够定义高度。不过您添加的是哪种控件?您可能需要将AutoSize设置为false。 - General Grey
@JotaBE 他的控件是一个Label,停靠在底部并向右对齐,自动调整大小为false。我认为它确实是一个标签,但当人们没有给你所需的所有信息时,会让人感到困惑。 - General Grey

3

使用 AnchorStyles:

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

1
要“停靠”在右下角,您需要:
  1. 将ControlA停靠在父控件ControlB的右侧
  2. 将ControlA的顶部填充设置为ControlA.Padding = new Padding(0, ControlB.Height - nTopPadding, 0, 0);
nTopPadding可以根据需要进行调整。对于文本框、标签等,最好使用ControlA.Font.Height
AutoSize=true时,这也适用。只需要根据需要更新填充即可。

0

来自MSDN文档Control.Dock

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

因此,您不能停靠在两个边缘 - 实际上我不确定您的意思是什么。

如果您想将控件保留在屏幕右下角,则可能会考虑使用Anchor属性,该属性确实允许您设置多个边缘以将控件锚定到。


好的,谢谢信息,让我停靠控件底部并将标签字段对齐到右边... - Nick

0

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接