背景:
我有一个TableLayoutPanel
放在 aUserControl
中,然后放在SplitContainer
. 以编程方式添加行。TableLayoutPanel
是 anchored Top|Left|Right
,所以在添加行之后,它的高度会重新计算并向下扩展。
里面TableLayoutPanel
有两列。第一列Absolute
的大小为 ,第二列的大小设置为AutoSize
。
在每个单元格中,都有一个Label
. 第二列中的所有标签定义如下:
Label vName = new Label();
vName.AutoSize = true;
vName.Anchor = AnchorStyles.Left | AnchorStyles.Top | AnchorStyles.Right | AnchorStyles.Bottom;
vName.Margin = new Padding(3);
vName.TextAlign = ContentAlignment.MiddleLeft;
vName.Name = "controlName";
vName.Text = "Some text here";
vName.DoubleClick += new EventHandler(vName_DoubleClick);
vName.Dock = DockStyle.None;
问题:
通常,一切正常,标签调整大小和一切,除了一种奇怪的情况:
- 标签的文本类似于
"immoballizes the device (33.33%)"
,第二列的宽度TableLauoutPanel
是精确设置的,因此所有文本都显示在一行中。 - 拆分器距离改变一个像素并且
UserControl
调整大小:宽度减小,因此标签应该调整大小,并且标签中的文本应该换行。 - 标签未调整大小,第二行文本未显示,它也可能不换行(如果这样做,标签中的文本位置会发生变化)。
- 分离器距离再次改变一个像素,并且
UserControl
调整大小:宽度进一步减小。 - 标签可以调整大小,所有文本都显示,包装。
当TableLayoutPanel
' 的宽度增加时也会发生同样的事情,但总是只有在存在一个像素的差异时(在环绕/不环绕文本之间)。
此外,更改Dock
和/或Anchor
和/或BorderStyle
标签的属性不起作用(我可能尝试了所有可能的组合......)
这张图稍微说明了这个问题: