C# Windows 窗体 - 调整窗体大小时移动元素

pet*_*ann 3 c# dialog winforms responsive

我需要一些有关 WinForms 响应式表单的帮助。我在位置 xy 有一个复选框。当我将表单调整为较小的尺寸时,此复选框应移至左侧,更靠近其他元素。

你可以在我制作的图片上看到它。我不知道,我必须在那里更改哪个属性才能实现这一点。要移动的复选框由红色框标记。

当我放大表单时,这个元素必须保持在它的默认位置。当我减少它时,复选框必须向左移动。当我再次放大它时,复选框必须移回其默认位置。

这是默认形式

表单现在变小了,复选框必须向左移动

Ren*_*ogt 5

您需要设置Anchor属性:

checkBox1.Anchor = AnchorStyles.Top | AnchorStyles.Right;
Run Code Online (Sandbox Code Playgroud)

这表明控件的右边框与包含控件(您的表单)的右边框的距离应始终相同。

您还可以在设计器窗口中设置此属性。


澄清后更新:

这是一个复杂的情况。我发现的一个解决方案(虽然我不确定它是最好的)可能是使用 aPanel来包含CheckBox.

  • 放置Panel在最左边的位置上CheckBox可以有
  • 设置 的大小,Panel使右边框位于最右侧的边框(加上几个像素)CheckBox
  • 设置MaximumSizePanel这个确切大小
  • Anchor属性设置PanelTop | Left | Right
  • CheckBox内部Panel放在右边缘
  • Anchor属性设置CheckBoxTop | Right

现在,如果您放大Form,则Panel由于该MaximumSize值而保持其大小。

如果你缩小了FormPanel也会因为它而缩小AnchorStyle.Right。在CheckBox该向左移动,因为它自己的AnchorStyle.Right

当你Form再次放大时,它Panel也会增长,但只有它MaximumSize再次达到它。CheckBox右边的动作跟上越来越大Panel

希望这能满足您的需求。如有必要,我稍后可以添加屏幕截图。