我在运行时动态添加一些文本框到表单。一切正常,即文本框对齐,锚定并自动调整大小,直到表单被最大化。在最大化窗体时,将文本框添加到相同的位置,而窗体最大化为而不是。这会导致文本框不对齐。使用动态添加控件的锚定属性
我怎样才能确保所有的文本框都在相同的位置和相同的大小,同时windowstate是正常的以及最大化?
编辑:
顺便说一下我使用C#
编辑:
会一个FlowLayoutPanel的有用吗?
我在运行时动态添加一些文本框到表单。一切正常,即文本框对齐,锚定并自动调整大小,直到表单被最大化。在最大化窗体时,将文本框添加到相同的位置,而窗体最大化为而不是。这会导致文本框不对齐。使用动态添加控件的锚定属性
我怎样才能确保所有的文本框都在相同的位置和相同的大小,同时windowstate是正常的以及最大化?
编辑:
顺便说一下我使用C#
编辑:
会一个FlowLayoutPanel的有用吗?
Anchor属性指定控件的哪些边界应确保它们始终与距离相同。它会变得非常混乱,这就是为什么当锚定到正确的边框时你会看到事物转移的原因。
如果你只是想确保文本框显示保持相对于自身的一致性,我建议放下一个面板,锚定面板,然后添加文本框到面板。文本框上的X和Y坐标相对于面板而言,因此布局更容易,尤其是当面板的位置突然变化时。
这是一个相当古老的问题,但也许我能够回答它。
阅读您的所有意见后,我想我可以总结一下你的问题是:
Top | Right
添加一些控件。为了摆脱这个问题,你可以尝试一些不同的方法:
第二点是你有错误(我认为)。如果您的表单具有原始尺寸,您可以找到一个计算控件位置的方法。为了在表单大小发生变化(例如最大化)时获得正确的位置,您必须考虑几个因素。
在你的情况下,你想要把一个控制挂钩Top | Right
,但位置由Top | Left
设置。在这种情况下,您必须计算control.location.x和form.width之间的差异,默认大小。然后你采取这种差异,并从表格当前宽度中减去它。现在你可以将你的控件放置在这个位置(因为Top不会通过调整大小来改变)。如果你在Bottom | Right
有一个Anchor,你必须计算与control.location.y和form.height相同的值。
如果设置为Top | Bottom
或Left | Right
没有锚点,则行为和计算作为练习留给读者。 ;-)
最后但并非最不重要也有另一种哈克的方式在合适的位置,让您的控制:
Form.Visible
到false
你正在使用什么锚定设置?默认值(Top | Left)会使您的控件停留在相对于表单左上角的相同位置,并且无论表单做什么都保持相同的大小。 – 2009-05-03 19:01:00
我正在使用Top | Right Anchor设置。 Anchor设置为Top | Left的文本框正确排列。 – tijuthomas 2009-05-03 19:07:51
因此,Top | Right文本框显示粘贴在表单的右上角?当表单被调整大小时,你希望这些文本框如何排列? – 2009-05-03 19:20:17