【发布时间】:2012-01-07 20:36:18
【问题描述】:
我有一个包含一些节点的树视图控件。我希望 Auto Ellipsis 属性像标签控件一样树视图节点。我做了谷歌,但没有得到相关信息或方法来完成这项任务。 我使用 c# 作为编程语言,使用 .net framework 3.5 作为平台。我正在以 Windows 形式而不是在 WPF 中制作程序。 谢谢。
【问题讨论】:
我有一个包含一些节点的树视图控件。我希望 Auto Ellipsis 属性像标签控件一样树视图节点。我做了谷歌,但没有得到相关信息或方法来完成这项任务。 我使用 c# 作为编程语言,使用 .net framework 3.5 作为平台。我正在以 Windows 形式而不是在 WPF 中制作程序。 谢谢。
【问题讨论】:
您是对的,该属性不存在。如果任何节点的标签长于控件的可视区域,TreeView 控件将显示水平滚动条。
您必须用省略号替换它的唯一选项是所有者绘制控件。但是由于只想更改节点的文本,可以将DrawMode property设置为OwnerDrawText(而不是OwnerDrawAll),大大减轻了所有者绘制的负担。
您可以找到所有者绘制TreeView 控件here on MSDN 的示例代码。
请记住,控件的ClientRectangle property,包括TreeView 控件,将告诉您控件客户区的实际宽度。以此判断节点标签是否过长,是否需要用椭圆绘制。
various overloads of the TextRenderer.DrawText method 将允许您以类似于本机控件绘制自身的方式绘制节点标签(即,使用 GDI 而不是 GDI+)。传递TextFormatFlags 的适当组合将指示该方法自动修剪文本并将其替换为省略号。
【讨论】: