我正在设计一个用户界面,我发现自己很头疼:如何对齐TextBox文本和标签文字,这些文字是并排的。
在设计模式下,很容易,用鼠标移动一个,出现紫色线条哦!对齐是好的,但我的代码是生成的,所以如何对齐它们的内容呢?
谢谢!
编辑:布局是我无法使用的(我没有制定规则,我的老板会这样做..)
答案 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