我有点卡在这里。我正在尝试动态添加带有两个标签的面板。
第一个标签必须是自动调整大小,第二个标签应位于第一个标签的左侧,该标签具有固定的最大宽度且自动调整大小。我的代码是以下
pnlSearchResults.SuspendLayout();
Panel pnlRow = new Panel
{
AutoSize = true,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(0),
Margin = new Padding(0),
Top = 0,
Left = 0,
Width = pnlSearchResults.Width - 30,
MaximumSize = new Size(pnlSearchResults.Width - 30, 0)
};
Label lblKey = new Label
{
Name = string.Format("lblKey{0}", 1),
Text = "My label goes here",
AutoSize = true,
TextAlign = ContentAlignment.MiddleLeft,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(0),
Margin = new Padding(0),
Top = 0,
Left = 0,
};
pnlRow.Controls.Add(lblKey);
Label lblValue = new Label
{
Name = string.Format("lblValue{0}", 1),
Text = "And my long text goes here... and it goes on and on and on and on and on and on and on and on and on and on and ...",
AutoSize = true,
Height = 27,
TextAlign = ContentAlignment.MiddleLeft,
BorderStyle = BorderStyle.FixedSingle,
Padding = new Padding(0),
Margin = new Padding(0),
Top = 0,
MaximumSize = new Size(pnlRow.Width - lblKey.Width - 10, 0),
Left = lblKey.PreferredWidth
};
pnlRow.Controls.Add(lblValue);
pnlSearchResults.Controls.Add(pnlRow);
pnlSearchResults.ResumeLayout();
pnlSearchResults.PerformLayout();
我读到调用suspend,resume或perform方法可以提高性能。这就是我的目标。
如您所见,第二个标签未与第一个标签正确对齐。如果我为第一个标签设置autosize = false,它的工作正常,但我希望我的第一个标签是自动调整大小。
我不确定我在这里缺少什么,请以正确的方式指导我。
答案 0 :(得分:0)
发生这种情况是因为尚未绘制标签,因此将其自身调整为正确的大小。如果你希望这个工作你不能暂停和恢复布局,你不能在显示表单之前放置控件,你可能需要在放置标签之间调用一个Refresh来让第一个标签正确自动调整。