假设我Label
内有一个Panel
。文本有时会比Panel
大,但并非总是如此。我怎么能弄清楚我应该在“...”前面的文字的哪一部分,而不是硬编码它将需要多少个字符,因为每个字符的大小都不相同。
if (bigLabel.Width >= this.ClientRectangle.Width - 10) {
dotLabel.Location = new Point(this.ClientRectangle.Width - 10 - dotLabel.Width);
}
else {
dotLabel.Location = new Point(this.Width + 10, this.Height + 10);
}
答案 0 :(得分:8)
将它留给TextRenderer.DrawText()来解决这个问题。指定TextFormatFlags.EndEllipsis选项。您可以在this answer中找到代码示例。
已经内置于Label控件中。将其AutoSize属性设置为False,将AutoEllipis属性设置为True以自动完成所有操作。你会得到一个免费的工具提示,显示缺失的文字。
答案 1 :(得分:1)
使用Graphics.DrawString方法(TextRenderer.DrawText是GDI方式,Graphics.DrawString - GDI +)。将StringFormat.Trimming属性设置为StringTrimming.EllipsisCharacter(EllipsisWord,EllipsisPath)。
答案 2 :(得分:0)
如果使用Telerik控件 - RadLabel,则只设置此属性:
this.lblReferralTracking.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.lblReferralTracking.TextWrap = false;
this.lblReferralTracking.UseCompatibleTextRendering = true;