我正在设计一个 UI,我发现自己很头疼:如何对齐 TextBox 文本和标签文本,它们并排排列。
在设计模式下,很简单,你用鼠标移动一个,就会出现一条紫色的线,瞧!对齐很好,但是我的是代码生成的,那么我该如何对齐它们的内容呢?
谢谢 !
编辑:布局是我不能使用的东西(我不制定规则,我的老板做..)
我喜欢为此目的使用FlowLayoutPanel
(而不是TableLayoutPanel
),因为您不需要摆弄列。请记住删除每个控件上的顶部和底部锚点以使它们垂直居中,并设置 FlowLayoutControl.AutoSize = true 和 AutoSizeMode = GrowAndShrink。
编辑:关于“布局是我不能使用的东西”的限制:所以你想在运行时以编程方式访问紫色文本基线对齐线位置?这是可能的,但它不可能比布局更快,因为只有控件的设计器知道它在哪里,所以你必须为你需要的所有控件创建设计器。
这个问题有一些可以用作起点的代码,但正如我所说,考虑到性能限制,这可能不是正确的方法。
看看 TableLayoutPanel。获得基线匹配仍然不是那么容易,但是通过将标签垂直居中并将行设置为 AutoSize,您将获得有序且灵活的东西。
然后使用每个控件的 X、Y、Width、Height 属性(继承自 Control)。
int padding = 5;
textbox.Y = label.Y;
textbox.X = label.Width + padding