C#Windows窗体 - 调整窗体大小时移动元素
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C#Windows窗体 - 调整窗体大小时移动元素相关的知识,希望对你有一定的参考价值。
我需要一些WinForms响应表单的帮助。我在位置xy有一个Checkbox。当我将表单调整为较小的大小时,此复选框应移动到左侧,更靠近其他元素。
你可以在我拍的照片上看到它。我不知道,我必须在那里改变哪个属性来实现这一目标。要移动的复选框由红色框标记。
当我放大窗体时,此元素必须保持其默认位置。当我减少它时,复选框必须向左移动。当我再次放大时,复选框必须移回其默认位置。
您需要设置Anchor
属性:
checkBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
这表明控件的右边界应始终与包含控件(表单)的右边界具有相同的距离。
您还可以在设计器窗口中设置此属性。
澄清后更新:
这是一个复杂的情况。我找到的一个解决方案(虽然我不确定它是最好的)可能是使用Panel
来包含CheckBox
。
- 将
Panel
放在CheckBox
可能拥有的最左侧位置 - 设置
Panel
的大小,使右边框位于CheckBox
应该具有的最右边界(加上几个像素) - 将
MaximumSize
的Panel
设置为此精确大小 - 将
Anchor
的Panel
属性设置为Top | Left | Right
- 将
CheckBox
放在Panel
的右边缘 - 将
Anchor
的CheckBox
属性设置为Top | Right
现在,如果你扩大Form
,Panel
保持其大小,因为MaximumSize
值。
如果你缩小Form
,Panel
也会因为它的AnchorStyle.Right
而缩小。 CheckBox
因为自己的AnchorStyle.Right
而向左移动。
当你再次扩大Form
时,Panel
也会增长,但只会再次到达MaximumSize
。 CheckBox
向右移动以跟上不断增长的Panel
。
希望这能做到你想要的。我可以在必要时添加截图。
所以我试图为此获得一个干净的代码解决方案,我希望这对每个人都有用:
private void CtrlSequence_SizeChanged(object sender, EventArgs e) // Form got reduced / enlarged
{
checkBox.Location = new Point(Math.Min(Width - checkBox.Width, 345), checkBox.Location.Y); // Width = Forms Width
}
重要!这仅适用于水平移动。垂直是固定的。
您可以使用TableLyoutPanel。使用此元素,您可以在Percent类型中设置Column和Row大小,并将值“left,right,top,bottom”设置为TableLyoutPanel的属性Anchor以及所有元素insaid。
以上是关于C#Windows窗体 - 调整窗体大小时移动元素的主要内容,如果未能解决你的问题,请参考以下文章
C# Windows 窗体 ListView 在按宽度自动调整大小 = -1 后获取列的实际宽度?