我发现了这个: 如果C#中提供了字体,是否可以计算固定宽度标签可以容纳多少个字符?
它不起作用,我有一个标签,我想确定标签中适合多少个字符,以便我可以在分配之前修改内容,我该怎么做,从我尝试过的上面的链接:
Graphics g = Graphics.FromHwnd(this.lblDestPathContent.Handle);
int intHeight, intWidth;
g.MeasureString(strPath, this.lblDestPathContent.Font
, this.lblDestPathContent.Size
, null, out intWidth, out intHeight);
this.lblDestPathContent.Text = strPath;
intWidth 返回的长度与 strPath 相同,并且它不适合标签。
lblDestPathContent 是一个 System.Windows.Forms.Label。
[编辑]上述示例:
strPath contains 154 characters
the size of the label is returned as {Width = 604, Height = 17}
Font is {Name = "Microsoft Sans Serif", Size=8.25}
调用MeasureString后:
intWidth contains 154
intHeight contains 2
我已经成功地做到了我需要的:
string strModifiedToFit = strPath;
bool blnFit = false;
while(blnFit == false) {
Size szText = System.Windows.Forms.TextRenderer.MeasureText(strModifiedToFit
, this.lblDestPathContent.Font);
if (szText.Width < this.lblDestPathContent.Size.Width) {
blnFit = true;
} else {
strModifiedToFit = strModifiedToFit.Substring(strModifiedToFit.Length - (strModifiedToFit.Length - 1));
}
}
this.lblDestPathContent.Text = strModifiedToFit;
上面从路径中删除一个字符,直到它适合标签。