我想改进我的绘图,以便在调整列时调整默认窗口Listview在每个子项字符串末尾绘制的...
个字符,就像您在此视频中看到的那样:
http://www.youtube.com/watch?v=J8LghvmLB4E
这是我用来绘制子项的代码:
Dim bounds As Rectangle = e.Bounds
bounds.X += 5
bounds.Width -= 5
Select Case e.Header.TextAlign
Case HorizontalAlignment.Left
TextRenderer.DrawText(e.Graphics, e.SubItem.Text, e.SubItem.Font,
bounds, e.SubItem.ForeColor,
TextFormatFlags.Left)
Case HorizontalAlignment.Center
TextRenderer.DrawText(e.Graphics, e.SubItem.Text, e.SubItem.Font,
bounds, e.SubItem.ForeColor,
TextFormatFlags.GlyphOverhangPadding Or TextFormatFlags.HorizontalCenter)
Case HorizontalAlignment.Right
TextRenderer.DrawText(e.Graphics, e.SubItem.Text, e.SubItem.Font,
bounds, e.SubItem.ForeColor,
TextFormatFlags.Right)
End Select
答案 0 :(得分:1)
我认为TextRenderer
可能是错误的做法。如果使用DrawString
,其中一个重载包含StringFormat
参数:
Graphics.DrawString(String, System.Drawing.Font, Drawing.Brush,
Drawing.RectangleF, Drawing.StringFormat)
您可以创建StringFormat
来控制文字的呈现方式,其中一个选项是StringTrimming
,这样您就可以指定ellipsis
('...')。这些是:
StringTrimming.EllipsisCharacter
StringTrimming.EllipsisPath
StringTrimming.EllipsisWord
StringTrimming.Word ' just chops at a word
与他们一起玩,看看你最喜欢哪一个。
我没有多少使用TextRenderer,但其重载包括TextFormatFlags
允许一些省略号(EndEllipsis
)。我不知道它的格式与StringFormat
方法不同,但它看起来并不广泛 - 可能是一个印章。