我需要一些WinForms响应表单的帮助。我在位置xy有一个Checkbox。当我将表单调整为较小的大小时,此复选框应移动到左侧,更靠近其他元素。
你可以在我拍的照片上看到它。我不知道,我必须在那里改变哪个属性来实现这一目标。要移动的复选框用红色框标记。
当我放大表格时,此元素必须保持默认位置。当我减少它时,复选框必须向左移动。当我再次放大时,复选框必须移回其默认位置。
答案 0 :(得分:3)
您需要设置Anchor
属性:
checkBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
这表明控件的右边框应始终与包含控件(表单)的右边框具有相同的距离。
您还可以在设计器窗口中设置此属性。
澄清后更新:
这是一个复杂的情况。我发现的一个解决方案(虽然我不确定它是最好的)可能是使用Panel
来包含CheckBox
。
Panel
放在CheckBox
可能拥有的最左侧位置Panel
的大小,使右边框位于CheckBox
应该具有的最右边(加上几个像素)MaximumSize
的{{1}}设置为此确切尺寸Panel
的{{1}}属性设置为Anchor
Panel
放在Top | Left | Right
右侧边缘CheckBox
的{{1}}属性设置为Panel
现在,如果您放大Anchor
,CheckBox
会因Top | Right
值而保持其大小。
如果缩小Form
,Panel
也会因MaximumSize
而缩小。 Form
由于其自己的Panel
而向左移动。
再次放大AnchorStyle.Right
时,CheckBox
也会增长,但只会再次到达AnchorStyle.Right
。 Form
向右移动以跟上不断增长的Panel
。
希望这可以做你想要的。我可以在必要时添加截图。
答案 1 :(得分:1)
所以我试图为此获得一个干净的代码解决方案,我希望这对每个人都有用:
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
}
重要!这仅适用于水平移动。垂直是固定的。
答案 2 :(得分:0)