当前位置:首页 > 随笔 > WinForm Label自动换行

WinForm Label自动换行

txtName2年前 (2022-05-13)随笔857

AutoSize=false时会自动换行,但超出范围的不显示

AutoSize=true时不会自动换行,超出范围的也看不到

可以使用TextBox的自动换行特性来获取需要的合适的大小

image.png

image.png

//构造函数里或初始化控件的地方
_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);
}


扫描二维码推送至手机访问。

版权声明:本文由txtName发布,如需转载请注明出处。

本文链接:https://blog.txtname.cn/2022/05/9.html

相关文章

腾讯云轻量应用服务器纯Docker环境部署网站和mysql等服务

腾讯云轻量应用服务器纯Docker环境部署网站和mysql等服务

由于之前购买的服务器到期,要把原有的网站和服务迁移过来,下面记录的是遇到的问题和解决方案。 原服务器是3年前以个人新用户300块买的3年的2核4G5M带宽的服务器,现在到期了续费不起太贵了而且也用不到这么高的配置,在阿里云和腾讯云...

发表评论

访客

看不清,换一张

◎欢迎参与讨论,请在这里发表您的看法和观点。