如何准确计算Label控件里文本行数?

gxingmin 2010-10-18 02:24:15
我用下面方法计算,似乎不是很准确,尤其行数很多,超过几十行后,计算结果跟实际要差一两行?

Graphics g=label1.CreateGraphics();

int n; //文本行数
int wordWidth=(int)g.MeasureString(label1.Text,label1.Font).Width; //计算文字宽度

if(wordWidth%label1.Width==0)
n=wordWidth/label1.Width;
else
n=wordWidth/label1.Width+1;

MessageBox.Show("共有:" + n.ToString());

g.Dispose();
g=null;
...全文
437 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
Rain_Franklin 2010-10-18
  • 打赏
  • 举报
回复
可能是宽度的问题吧
gxingmin 2010-10-18
  • 打赏
  • 举报
回复
谢谢sprc_lcl(cool一生),你的代码有效,结贴
sprc_lcl 2010-10-18
  • 打赏
  • 举报
回复
this.label1.Height= height;
sprc_lcl 2010-10-18
  • 打赏
  • 举报
回复
int height = (int)g.MeasureString(label1.Text, label1.Font, label1.Width).Height;
MessageBox.Show(height.ToString());
gxingmin 2010-10-18
  • 打赏
  • 举报
回复
谢谢各位解答!

那怎么计算才能精确呢?
或者我换一个需求,假如我的Label宽度(.Width)是固定的,文本(.Text)是不固定的,如何计算Label的高度(.Height),是其文本正好都显示出来?
qiuxin425 2010-10-18
  • 打赏
  • 举报
回复
int wordWidth=(int)g.MeasureString(label1.Text,label1.Font).Width; //计算文字宽度
有问题,如果在某行的末尾剩余宽度不够这个字的话就会换行,这样宽度就会增加。
对于少文本也许还精确,但文本较多就不精确了
qiuxin425 2010-10-18
  • 打赏
  • 举报
回复
有问题,如果在某行的末尾剩余宽度不够这个字的话就会换行,这样宽度就会增加。
蔡袅 2010-10-18
  • 打赏
  • 举报
回复
if(wordWidth%label1.Width==0)  
n=wordWidth/label1.Width;

这个有问题,label1文本不是每一行都达到这个宽度吧?没这个宽度≥每行宽度 当然就会差一两行啦
shixiujin 2010-10-18
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/6xe5hazb(v=VS.90).aspx
我也没有什么可以提供的解决方法,以上链接希望对你有所帮助!
phil999 2010-10-18
  • 打赏
  • 举报
回复
label 有 padding 属性
buzhidaoyongyuan 2010-10-18
  • 打赏
  • 举报
回复
不是很懂啊
KxdZhao 2010-10-18
  • 打赏
  • 举报
回复
新手帮顶!!mark

110,537

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧