none
onpaint事件 RRS feed

  • 问题

  •  

    各位专家好:

      我弄了一个自定义控件,在鼠标不同状态下会在背景

      我定义了一个鼠标状态 enum

    在控件个个个 mouse事件里面更改这个枚举状态  ,在onpaint是家里面绘制外形

    但是我发现 当鼠标响应时候 onpaint事件 好像不会被引发

    Code Snippet

    #Region "定义鼠标状态枚举"
        '''
        ''' 鼠标状态枚举
        '''
        '''
        Private Enum MouseStateType
            Leave = 0
            Down = 1
            Enter = 2
            Up = 3
            None = 4
        End Enum
    #End Region

     

     

    Code Snippet

    #Region "重写onpaint事件"
        Protected Overrides Sub OnPaint(ByVal e As System.Windows.Forms.PaintEventArgs)
            MyBase.OnPaint(e)
            If Me.MouseState = MouseStateType.None Then

                Dim p As New Pen(Color.FromArgb(100, 213, 213, 213))
                e.Graphics.DrawRectangle(p, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1))
            ElseIf Me.MouseState = MouseStateType.Enter Then
                Dim p As New Pen(Color.FromArgb(100, 150, 217, 249))
                e.Graphics.DrawRectangle(p, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1))
            ElseIf Me.MouseState = MouseStateType.Leave Then
                Dim p As New Pen(Color.FromArgb(100, 213, 213, 213))
                e.Graphics.DrawRectangle(p, New Rectangle(0, 0, Me.Width - 1, Me.Height - 1))

            End If
            Me.FindForm.Text = Me.MouseState

        End Sub
    #End Region

     

    Code Snippet

      Private Sub ItemHead_SubItem_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
            Me.MouseState = MouseStateType.Leave
        End Sub

     

    比如:

    运行时鼠标离开控件 paint事件没有工作

    请问是出了什么问题.....

    谢谢

    2008年10月17日 2:41

答案

  • Code Snippet

     

    Private Sub ItemHead_SubItem_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
            Me.MouseState = MouseStateType.Leave

    Me.Invalidate ()
        End Sub

     

     

    2008年10月17日 3:10
    版主

全部回复

  • Code Snippet

     

    Private Sub ItemHead_SubItem_MouseLeave(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.MouseLeave
            Me.MouseState = MouseStateType.Leave

    Me.Invalidate ()
        End Sub

     

     

    2008年10月17日 3:10
    版主
  •  

    谢谢专家的帮助*^_________________________^*

    还有个问题 就是自定义用户控件的namespace 如何定义 在代码窗口顶层写namespace XX 设计器会一个错误说不能写namespace   这样就只能用控件名字那个命名空间了吗--_-_||

    2008年10月17日 3:15
  • Code Snippet

     


    Namespace n1
        Public Class Test

        End Class
    End Namespace

     

    Namespace n2
        Public Class Test

        End Class
    End Namespace

     

     

    2008年10月17日 3:36
    版主