如何在空的ListView控件上绘制自定义消息

涟漪

我试图编写一个继承ListView控件的自定义类。到目前为止,我已经添加了OnDrawItem,OnDrawSubItem和OnDrawColumnHeader事件,该事件使我可以绕过标准Windows绘图来执行一些自定义操作。

我的控件几乎是我要实现的目标的100%,但是,它的最后一部分是向空的ListView控件中添加自定义消息-这是我在努力的目标。尽可能多地阅读,听起来我需要添加一个过程来捕获NM_CUSTOMDRAW事件并自己做点画(我可能是错的)。基本上,一旦我尝试绘制背景,它就会关闭列表项的所有绘制。

因为我对此不太熟悉,所以有人可以提供一个小例子或提供一些信息的链接,这些信息可能可以帮助我解决这个问题。

我添加了一个“受保护的重写子WndProc(由System.Windows.Forms.Message传递的ByRef m)”调用以捕获WM_NOTIFY消息,但是我不确定是否朝着正确的方向前进。

我希望仅在背景上(空时)打印自定义消息,而不影响控件的其他任何图形。

这可能吗?任何帮助将不胜感激。谢谢

比昂·罗格·克林佐(Bjørn-RogerKringsjå)

您可以通过重写WndProc方法并检查WM_PAINT消息来实现。

Public Class UIListView
    Inherits ListView

    Private Sub WmPaint(ByRef m As Message)
        MyBase.WndProc(m)
        Const text As String = "ListView is empty..."
        Using g As Graphics = Me.CreateGraphics()
            Using f As New StringFormat()
                Using b As New SolidBrush(Me.ForeColor)
                    f.Alignment = StringAlignment.Center
                    f.LineAlignment = StringAlignment.Center
                    g.DrawString(text, Me.Font, b, Me.DisplayRectangle, f)
                End Using
            End Using
        End Using
    End Sub

    Protected Overrides Sub WndProc(ByRef m As System.Windows.Forms.Message)
        If ((m.Msg = WM_PAINT) AndAlso (Me.Items.Count = 0)) Then
            Me.WmPaint(m)
        Else
            MyBase.WndProc(m)
        End If
    End Sub

    Private Const WM_PAINT As Integer = 15

End Class

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何在空的ListView控件上绘制自定义消息

来自分类Dev

如何在.Net WinForms控件上绘制自定义边框

来自分类Dev

在已经绘制的自定义控件上绘制

来自分类Dev

如何在Apple Watch上绘制自定义图形?

来自分类Dev

如何在自定义tabcontrol上绘制ImageList图像

来自分类Dev

自定义控件-如何在组合框上绘制文本框

来自分类Dev

如何在自定义listView上创建自定义listSelector

来自分类Dev

如何在自定义listView上创建自定义listSelector

来自分类Dev

如何在自定义控件中将焦点设置在控件上?

来自分类Dev

如何在自定义控件中正确响应焦点消息?

来自分类Dev

如何绘制自定义控件,然后传播事件?

来自分类Dev

JavaFX-如何创建简单的自定义绘制控件?

来自分类Dev

如何在 JavaFX 中的 ListView 中设置自定义控件的样式

来自分类Dev

如何在自定义用户控件上创建click事件?

来自分类Dev

如何在带有滚动条的控件的非客户区域内绘制自定义边框?

来自分类Dev

当iOS 7中显示工作表/警报时,如何在自定义绘制的控件上将tintColor设置为灰色?

来自分类Dev

Listview自定义项控件对齐

来自分类Dev

如何正确公开自定义控件上的属性?

来自分类Dev

如何在自定义TGraphicControl上绘制淡出文本?

来自分类Dev

如何在自定义TGraphicControl上绘制淡出文本?

来自分类Dev

如何在DateTimePicker控件中自定义日历?

来自分类Dev

如何在 Leaflet 中创建自定义设置控件

来自分类Dev

如何在表单中动态添加自定义控件

来自分类Dev

如何在 JavaFX 中制作自定义 LineChart 控件?

来自分类Dev

如何在自定义控件中添加所需的星号?

来自分类Dev

Yii2-如何在输入字段上添加自定义错误消息

来自分类Dev

如何在Laravel 4上执行自定义auth :: attempt消息

来自分类Dev

ServiceStack.RabbitMq-如何在消息上设置自定义属性

来自分类Dev

如何在 javascript 中函数引用的 console.log 上记录自定义消息

Related 相关文章

  1. 1

    如何在空的ListView控件上绘制自定义消息

  2. 2

    如何在.Net WinForms控件上绘制自定义边框

  3. 3

    在已经绘制的自定义控件上绘制

  4. 4

    如何在Apple Watch上绘制自定义图形?

  5. 5

    如何在自定义tabcontrol上绘制ImageList图像

  6. 6

    自定义控件-如何在组合框上绘制文本框

  7. 7

    如何在自定义listView上创建自定义listSelector

  8. 8

    如何在自定义listView上创建自定义listSelector

  9. 9

    如何在自定义控件中将焦点设置在控件上?

  10. 10

    如何在自定义控件中正确响应焦点消息?

  11. 11

    如何绘制自定义控件,然后传播事件?

  12. 12

    JavaFX-如何创建简单的自定义绘制控件?

  13. 13

    如何在 JavaFX 中的 ListView 中设置自定义控件的样式

  14. 14

    如何在自定义用户控件上创建click事件?

  15. 15

    如何在带有滚动条的控件的非客户区域内绘制自定义边框?

  16. 16

    当iOS 7中显示工作表/警报时,如何在自定义绘制的控件上将tintColor设置为灰色?

  17. 17

    Listview自定义项控件对齐

  18. 18

    如何正确公开自定义控件上的属性?

  19. 19

    如何在自定义TGraphicControl上绘制淡出文本?

  20. 20

    如何在自定义TGraphicControl上绘制淡出文本?

  21. 21

    如何在DateTimePicker控件中自定义日历?

  22. 22

    如何在 Leaflet 中创建自定义设置控件

  23. 23

    如何在表单中动态添加自定义控件

  24. 24

    如何在 JavaFX 中制作自定义 LineChart 控件?

  25. 25

    如何在自定义控件中添加所需的星号?

  26. 26

    Yii2-如何在输入字段上添加自定义错误消息

  27. 27

    如何在Laravel 4上执行自定义auth :: attempt消息

  28. 28

    ServiceStack.RabbitMq-如何在消息上设置自定义属性

  29. 29

    如何在 javascript 中函数引用的 console.log 上记录自定义消息

热门标签

归档