Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/299.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 是否有允许文本换行和结尾省略号的TextFormatFlags组合?_C#_Text Rendering - Fatal编程技术网

C# 是否有允许文本换行和结尾省略号的TextFormatFlags组合?

C# 是否有允许文本换行和结尾省略号的TextFormatFlags组合?,c#,text-rendering,C#,Text Rendering,我一直无法编写一点字符串呈现代码,这些代码提供了我想要的一切。到目前为止,只有权衡 我正在寻找一种类似Windows7桌面快捷方式的东西,在文本上方有一个图像,文本可以换行一次,任何更大的东西都可以用椭圆截断 例如: 我使用的是TextRenderer.DrawText,我尝试了TextFormatFlags的各种组合,但我只能得到无限换行的文本,或者是停在一行并带有省略号的文本 一些例子。在所有情况下,提供给textrender的边界都在我正在绘制的曲面的ClipRectangle的边界内。

我一直无法编写一点字符串呈现代码,这些代码提供了我想要的一切。到目前为止,只有权衡

我正在寻找一种类似Windows7桌面快捷方式的东西,在文本上方有一个图像,文本可以换行一次,任何更大的东西都可以用椭圆截断

例如:

我使用的是
TextRenderer.DrawText
,我尝试了
TextFormatFlags
的各种组合,但我只能得到无限换行的文本,或者是停在一行并带有省略号的文本

一些例子。在所有情况下,提供给
textrender
的边界都在我正在绘制的曲面的
ClipRectangle
的边界内。它试图呈现的文本是“这是一个名为#1的组的相当长的名称。”

此代码:

TextFormatFlags flags = TextFormatFlags.HorizontalCenter | 
     TextFormatFlags.NoPadding | TextFormatFlags.WordBreak | 
     TextFormatFlags.EndEllipsis;
Rectangle rect = new Rectangle(x, y, this.Width - 6, this.Height - y);
TextRenderer.DrawText(e.Graphics, _text, Font, rect, _textColor, flags);
…产生了以下结果:

只需删除
TextFormatFlags.WordBreak
标志即可产生:


如何才能做到这一点,例如在我经过的
矩形范围内尽可能地进行换行,然后在发生截断时进行结束椭圆?

您必须使用一个,cough,非直观命名的选项来获得分词和结束椭圆
TextFormatFlags.TextBoxControl
提供您要查找的内容


这有一些额外的格式化行为,如果您喜欢图标标题的外观,您可能不会对此感到不安,它使用相同的winapi函数。它的关键之处在于,它不会像多行文本框那样显示剪裁的行,也会让您返回省略号。

可能的重复必须指定所有三个标志,
TextBoxControl
WordBreak
EndEllipsis
,才能获得所需的行为
TextBoxControl
本身并不能神奇地完成这项任务。也许这可以在将来节省一些时间。