3

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);
}
4

3 に答える 3

8

TextRenderer.DrawText() に任せて、それ自体を理解してください。TextFormatFlags.EndEllipsis オプションを指定します。コード サンプルは、この回答にあります。

これは、Label コントロールに既に組み込まれています。AutoSize プロパティを False に、AutoEllipis プロパティを True に設定して、すべてを自動的に実行します。また、不足しているテキストを示すツールチップが無料で表示されます。

于 2012-05-28T18:13:20.607 に答える
1

Graphics.DrawStringメソッドを使用します(TextRenderer.DrawTextはGDIの方法であり、Graphics.DrawString-GDI +です)。StringFormat.TrimmingプロパティをStringTrimming.EllipsisCharacter(EllipsisWord、EllipsisPath)に設定します。

于 2012-05-28T18:23:48.873 に答える
0

Telerik コントロール - RadLabel を使用する場合は、次のプロパティのみを設定します。

this.lblReferralTracking.TextAlignment = System.Drawing.ContentAlignment.MiddleLeft;
this.lblReferralTracking.TextWrap = false;
this.lblReferralTracking.UseCompatibleTextRendering = true;
于 2016-01-28T08:43:03.473 に答える