对齐TextBox和Label文本

时间:2009-07-23 07:59:07

标签: c# .net layout alignment

我正在设计一个用户界面,我发现自己很头疼:如何对齐TextBox文本和标签文字,这些文字是并排的。

在设计模式下,很容易,用鼠标移动一个,出现紫色线条哦!对齐是好的,但我的代码是生成的,所以如何对齐它们的内容呢?

谢谢!

编辑:布局是我无法使用的(我没有制定规则,我的老板会这样做..)

3 个答案:

答案 0 :(得分:15)

我喜欢使用FlowLayoutPanel(而不是TableLayoutPanel)来实现此目的,因为您不需要使用列。 记住删除每个控件上的顶部和底部锚点,使它们垂直居中,并设置FlowLayoutControl.AutoSize = true和AutoSizeMode = GrowAndShrink。

编辑:关于“布局是我无法使用的内容”的限制:所以您希望在运行时以编程方式访问紫色文本基线捕捉线位置?这是可能的,但它不可能比布局更快,因为只有控件的设计器知道它在哪里,所以你必须为你需要的所有控件创建设计器。

This question有一些代码可以作为起点,但正如我所说,考虑到性能限制,它可能不是正确的方法。

答案 1 :(得分:4)

看一下TableLayoutPanel。仍然不太容易获得基线匹配,但通过垂直居中标签并将行设置为AutoSize,您将获得有序和灵活的东西。

答案 2 :(得分:1)

然后使用每个控件的X,Y,Width,Height属性(从Control继承)。

int padding = 5;
textbox.Y = label.Y;
textbox.X = label.Width + padding