如果文本大于容器,如何确定放置"..."的位置

Ozt*_*aco 3 c# algorithm text label winforms

假设我有一个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);
}
Run Code Online (Sandbox Code Playgroud)

Han*_*ant 8

将它留给TextRenderer.DrawText()来解决这个问题.指定TextFormatFlags.EndEllipsis选项.您将在此答案中找到代码示例.

这已经内置在Label控件中.将其AutoSize属性设置为False,将AutoEllipis属性设置为True以自动完成所有操作.然后你会得到一个免费的工具提示,显示丢失的文字.