winform中label换行后行距的设置
某种情况下,
需要使用label在界面中添加说明性的文本,
文本长度往往比较长,
需要换行,
虽然在字符中加入\r\n后可以实现换行,
但默认的行距很小,
文本挤在一起,
看起来比较费眼,
所以想着调整一下行距,
经过搜索,
在这里找到了相关的方法。
我自己试着改了一下,
直接在label的paint方法中实现了,
没有定义自己的控件。
代码如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 | private void label8_Paint( object sender, PaintEventArgs e) { System.Windows.Forms.Label label = sender as System.Windows.Forms.Label; int LineDistance = 4; //行间距 Graphics g = e.Graphics; g.Clear(label.BackColor); String drawString = label.Text; System.Drawing.Font drawFont = label.Font; SolidBrush drawBrush = new SolidBrush(label.ForeColor); //文本的矩形区域大小 SizeF textSize = g.MeasureString(label.Text, label.Font); //计算行数 int lineCount = Convert.ToInt16(textSize.Width / label.Width) + 1; //计算调整后的高度 label.Height = Convert.ToInt16((textSize.Height + LineDistance) * lineCount); label.AutoSize = false ; float x = 0.0F; float y = 0.0F; StringFormat drawFormat = new StringFormat(); int step = 1; lineCount = drawString.Length; //行数不超过总字符数目 for ( int i = 0; i < lineCount; i++) { //计算每行容纳的字符数目 int charCount; for (charCount = 0; charCount < drawString.Length; charCount++) { string subN = drawString.Substring(0, charCount); string subN1 = drawString.Substring(0, charCount + 1); if (g.MeasureString(subN, label.Font).Width <= label.Width && g.MeasureString(subN1, label.Font).Width > label.Width) { step = charCount; break ; } } string subStr; if (charCount == drawString.Length) //最后一行文本 { subStr = drawString; e.Graphics.DrawString(subStr, drawFont, drawBrush, x, Convert.ToInt16(textSize.Height * i) + i * LineDistance, drawFormat); break ; } else { subStr = drawString.Substring(0, step); //当前行文本 drawString = drawString.Substring(step); //剩余文本 e.Graphics.DrawString(subStr, drawFont, drawBrush, x, Convert.ToInt16(textSize.Height * i) + i * LineDistance, drawFormat); } } } |
虽然还有些不足,
比如逗号在行首,
但整体效果比之前要好不少了!
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步