7

我正在设计一个 UI,我发现自己很头疼:如何对齐 TextBox 文本和标签文本,它们并排排列。

在设计模式下,很简单,你用鼠标移动一个,就会出现一条紫色的线,瞧!对齐很好,但是我的是代码生成的,那么我该如何对齐它们的内容呢?

谢谢 !

编辑:布局是我不能使用的东西(我不制定规则,我的老板做..)

4

3 回答 3

15

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

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

这个问题有一些可以用作起点的代码,但正如我所说,考虑到性能限制,这可能不是正确的方法。

于 2009-11-07T07:47:24.440 回答
4

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

于 2009-07-23T08:02:38.507 回答
1

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

int padding = 5;
textbox.Y = label.Y;
textbox.X = label.Width + padding
于 2009-07-23T08:07:50.260 回答