我正在设计一个用户界面,但我发现自己很纠结:如何对齐并排的文本框和标签文本。
在设计模式下,这很容易,您可以用鼠标移动其中一个,紫色线条出现,就完成了对齐。但我的是代码生成的,那么我该如何对其内容进行对齐呢?
谢谢! 编辑:布局不是我能使用的东西(我不能决定,是老板规定的)。
在设计模式下,这很容易,您可以用鼠标移动其中一个,紫色线条出现,就完成了对齐。但我的是代码生成的,那么我该如何对其内容进行对齐呢?
谢谢! 编辑:布局不是我能使用的东西(我不能决定,是老板规定的)。
我喜欢使用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