gpt4 book ai didi

c# - 将 anchor 属性与动态添加的控件一起使用

转载 作者:太空狗 更新时间:2023-10-29 23:42:42 24 4
gpt4 key购买 nike

我在运行时向表单动态添加一些文本框。一切正常,即文本框对齐、锚定并自动调整大小直到表单最大化。在最大化表单时,文本框被添加到相同的位置,而表单没有 最大化。这会导致文本框未对齐。

在窗口状态正常和最大化时,如何确保所有文本框位于相同位置和相同大小?

编辑:

顺便说一句,我正在使用 C#

编辑:

flowlayoutpanel 在这里有用吗?

最佳答案

这是一个很老的问题,但也许我能回答。

在阅读了您的所有评论后,我想我可以将您的问题总结为:

  • 您有一个特定大小的表单,并在运行时在特定位置添加一些控件,并将 anchor 设置为 Top |对的
  • 如果您只显示表单并让控件出现,则一切正常
  • 如果您最大化您的表单(或更改它的大小),您的控件将不会再出现在您想要的正确位置。

要摆脱这个问题,您可以尝试一些不同的方法:

  1. 使用 FlowLayoutPanel , 照顾好 FlowDirection也许只是预先创建所有需要的控件并切换可见状态。
  2. 为新创建的控件的位置使用正确的值。

第二点是你的错误(我认为)。如果您的表单具有原始大小,您会找到某种方法来计算控件的位置。如果表单大小发生变化(例如最大化),要获得正确的位置,您必须考虑几个因素。

  • 从默认尺寸到当前尺寸的增量值。
  • 您希望在控件上设置的 anchor 。

在您的情况下,您希望放置一个锚定的控件 Top |对,但位置由Top | 设置左。在这种情况下,您必须计算默认大小的 control.location.x 和 form.width 之间的差异。然后你把这个差异从表格当前宽度中减去。现在您可以将控件放在这个位置(因为 Top 不会因调整大小而改变)。如果您在 Bottom | 处有一个 anchor 对你必须用 control.location.y 和 form.height 计算相同的值。

没有 anchor 时的行为和计算,对于 Top |底部左|右边的 设置留给读者作为练习。 ;-)

最后但同样重要的是,还有另一种 hacky 方法可以让您在正确的位置进行控制:

  • 如果您想在某处放置一个新控件,请将 Form.Visible 更改为 false
  • 保存表单状态、大小和位置
  • 将它们更改为您的默认值
  • 添加你想要的控件
  • 恢复以前保存的值
  • 使表单再次可见。

关于c# - 将 anchor 属性与动态添加的控件一起使用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/817631/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com