如何弄清楚在哪里放置“..“,如果文本大于容器

本文关键字:文本 如果 大于 弄清楚 在哪里 | 更新日期: 2023-09-27 18:35:43

假设我在Panel里有一个Label。文本有时会大于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);
}

如何弄清楚在哪里放置“..“,如果文本大于容器

把它留给 TextRenderer.DrawText() 自己来弄清楚。 指定 TextFormatFlags.EndEllipsis 选项。 您将在此答案中找到代码示例。

它已内置于 Label 控件中。 将其"自动大小"属性设置为"假",将"自动椭圆"属性设置为"真"以自动完成所有操作。 您可以免费获得一个工具提示,其中显示了缺少的文本。

使用Graphics.DrawString

方法(TextRenderer.DrawText是一种GDI方式,Graphics.DrawString - GDI+)。将 StringFormat.Trimming 属性设置为 StringTrimming.EllipsisCharacter (EllipsisWord, EllipsisPath)。

如果使用 Telerik 控件 - RadLabel,请仅设置以下属性:

this.lblReferralTracking.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.lblReferralTracking.TextWrap = false;
this.lblReferralTracking.UseCompatibleTextRendering = true;
相关文章: