WinForm Label自动换行
AutoSize=false时会自动换行,但超出范围的不显示
AutoSize=true时不会自动换行,超出范围的也看不到
可以使用TextBox的自动换行特性来获取需要的合适的大小
//构造函数里或初始化控件的地方 _textbox = new TextBox { //设置TextBox允许的最大宽度 MaximumSize = new Size(315, 0), Multiline = true, WordWrap = true, Visible = false, }; Controls.Add(_textbox); lblMessage.TextChanged += LblMessage_TextChanged; //在给Label控件赋值的地方 _textbox.Text = message; lblMessage.Text = message; private void LblMessage_TextChanged(object sender, EventArgs e) { //获取TextBox的首选大小,系统推荐的 var newSize = _textbox.PreferredSize; //如果新的高度高于默认窗体高度内Label能显示的最高高度就改变窗体高度 //同步修改Label的宽高 if (newSize.Height > 80) { Height += newSize.Height - 80; lblMessage.AutoSize = false; lblMessage.Width = newSize.Width; lblMessage.Height = newSize.Height; } //Label居中显示 lblMessage.Location = new Point(lblMessage.Location.X, (Height - lblMessage.Height - CaptionHeight)/2 + 5); }