我正在尝试在没有要显示的数据时将自定义消息添加到列表视图的背景中。我通过下面的调用打开了UserPaint标志,这正好给了我想要的东西。
SetStyle(ControlStyles.UserPaint, True)
然而,这会禁用整个ListView的所有Item和SubItem绘图。我只是假设这个设置为真,我现在负责自己绘制所有项目(我可能是错的)。
如果我是正确的,有没有人有关于如何手动自定义绘制列表项的教程,或者给我一些示例,因为我对处理消息非常新,并且很想全神贯注。
以下是我通过OnPaint方法绘制自定义消息的代码:
Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
Dim MessageFont As Font = _EmptyMessageFont
Dim MessageColour As Color = _EmptyMessageColour
Dim MessageText As String = _EmptyMessageString
If Not Me.Items.Count > 0 Then
Dim flags As TextFormatFlags
Dim rec As New Rectangle(Me.Location.X + 2, Me.Location.Y + 2, Me.Width - 4, Me.Height - 4)
flags = TextFormatFlags.HorizontalCenter Or TextFormatFlags.VerticalCenter Or TextFormatFlags.SingleLine
TextRenderer.DrawText(e.Graphics, MessageText, MessageFont, rec, MessageColour, flags)
End If
MyBase.OnPaint(e)
End Sub
不确定如何在此方法中添加代码来处理列表项的正常绘制。