以下是我在运行时对标签所做的事情:(C#)
label.Text = sometext;
label.TextAlign = ContentAlignment.MiddleCenter;
label.Invalidate();
label.Update();
label.Refresh();
label.PerformLayout();
显示窗口后,在此代码运行之前,默认文本在中间位置完美对齐。此代码运行后,文本左上角对齐。
标签的自动调整大小为假。
现在,我哪里做错了?
更新
我找到了一个部分解决方案,不知道为什么我自己的问题: 将“UseCompatibleTextRendering”设置为true将使文本在文本修改后没有任何5行代码正确对齐。但这毫无意义。是不是新文本渲染应该更好,旧渲染让我看到了视觉文物等?
答案 0 :(得分:0)
我试图重现你的问题,但不能。我建议你修改这个简单的代码,试图重现你的问题:
class FormD : Form {
Label lb = new Label { Text = "ABCDEFG", Size = new Size(200, 200), TextAlign = ContentAlignment.MiddleCenter, BackColor = Color.RosyBrown, UseCompatibleTextRendering = true };
public FormD() {
Controls.Add(lb);
}
[STAThread]
static void Main(String[] args) {
Application.SetCompatibleTextRenderingDefault(false);
Form f2 = new FormD();
Application.Run(f2);
return;
}
}