C# 什么';在TextFormatFlags枚举中,EndEllipsis和WordEllipsis之间的区别是什么?

C# 什么';在TextFormatFlags枚举中,EndEllipsis和WordEllipsis之间的区别是什么?,c#,winforms,text-rendering,C#,Winforms,Text Rendering,根据我对的理解,在使用TextFormatFlags.EndEllipsis时,应将文本修剪为适合显示矩形,并替换为省略号: EndEllipsis |删除修剪线的末端,并将其替换为省略号 使用TextFormatFlags.WordEllipsis时,应将文本修剪到适合显示矩形的最后一个单词,并添加省略号: 单词省略号|将行修剪到最近的单词,省略号放置在修剪行的末尾 然而,我似乎找不到这两者之间的任何区别 以下是我的测试控制代码: public partial class UserContro

根据我对的理解,在使用
TextFormatFlags.EndEllipsis
时,应将文本修剪为适合显示矩形,并替换为省略号:

EndEllipsis |删除修剪线的末端,并将其替换为省略号

使用
TextFormatFlags.WordEllipsis
时,应将文本修剪到适合显示矩形的最后一个单词,并添加省略号:

单词省略号|将行修剪到最近的单词,省略号放置在修剪行的末尾

然而,我似乎找不到这两者之间的任何区别

以下是我的测试控制代码:

public partial class UserControl1 : UserControl
{
    public UserControl1()
    {
        InitializeComponent();
        this.Text = "This it my text. It's long enough to get cut in display.";
    }


    protected override void OnPaint(PaintEventArgs e)
    {
        base.OnPaint(e);
        var flags = (this.IsWordEllipsis) ? TextFormatFlags.WordEllipsis : TextFormatFlags.EndEllipsis;
        TextRenderer.DrawText(e.Graphics, this.Text, this.Font, e.ClipRectangle, this.ForeColor, flags);
    }

    private bool _IsWordEllipsis;

    public bool IsWordEllipsis
    {
        get { return _IsWordEllipsis; }
        set { _IsWordEllipsis = value; this.Invalidate(); }
    }
}
无论我设置了什么值,IsWordEllipsis属性-文本始终呈现为
这是我的文本。它很长,…

是否应该使用
单词省略
标志将显示的字符串修剪为最后一个完整的单词?

这是我的文本。它很长…

内部
文本渲染器。DrawText
调用函数

相应的标志为:

DT_WORD_省略号:截断任何不符合 矩形并添加椭圆

DT_END_省略号用于显示的文本,如果字符串的结尾没有 拟合矩形时,它将被截断并添加椭圆。如果 不在字符串末尾的单词超出了 矩形,它被截断,没有椭圆

我对.NET文档中的
WordEllipsis
的解释方法和您一样,但上面这句话可能更好地解释了这个选项的作用

如果仍然不清楚,请看一看这个简单的示例,它试图呈现
var quote=“不是所有\n可以计数的东西都可以计数,\n也不是所有\n可以计数的东西。”


谢谢!我可能应该考虑自己测试多行字符串。