我需要一些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
}
重要!这仅适用于水平移动。垂直是固定的。