winform 中lable的过长导致被截取造成难看的界面解决方法
在实际开发过程中,遇到这个问题:
在网上找了半天觉解决不了问题,因为中文和数字占的大小不一样,不能通过截取字符串来完成,不过最后费劲心思终于有所突破。
基本思路,设置一个label控件用来保存名称,设置label的autosize为true,visible=false,然后赋值,判断大小是不是超过了界面。
如超过了则让三个点出现,否则三个省略点不出现。
其他设置:
方法1:设置名称的宽度为合适的大小,要设置名称label的Autosize=false,否则设置不了宽度。这样如果字符串的大小超过了则会自动换行,但是因为height大小固定,所以看不到换行的第二行字符串。
方法2:设置名称label的Autosize=true,然后设置Maxminusize,注意宽度如果不设置,则会自动换行,并显示出来,如果设置高度为一行的高度,则不会显示。
上截图
省略号设置
name设置
用于辅助的lable设置
关键代码:
this.lbl_NameCopy.Text = StationInfo.StationName; if (this.lbl_NameCopy.Width > 92)//数字都是根据实际大小进行调整的 { this.lbl_StationName.MaximumSize = new System.Drawing.Size(80, 17); this.lbl_Dot.Visible = true; } else if (this.lbl_NameCopy.Width > 80 && this.lbl_NameCopy.Width <= 92) { this.lbl_StationName.MaximumSize = new System.Drawing.Size(92, 17); this.lbl_Dot.Visible = false; } else if (this.lbl_NameCopy.Width <= 80) { this.lbl_Dot.Visible = false; } this.lbl_StationName.Text = StationInfo.StationName;