Datetimepicker dont on peut modifier la propriété backcolor

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 622 fois - Téléchargée 31 fois

Contenu du snippet

La propriété BackColor d'un contrôle DateTimePicker n'est pas modifiable, tout du moins elle n'apparait pas dans le contrôle lui-même, ni dans la partie "calendrier" du contrôle lorsque celle-ci est affichée.
Ce code contient une classe dérivée de DateTimePicker, dont la proriété BackColor est surchargée.

Source / Exemple :


Imports System
Imports System.ComponentModel
Imports System.Drawing
Imports System.Windows.Forms

Public Class MonDTP
    Inherits DateTimePicker

    Private m_backBrush As SolidBrush

    Public Overrides Property BackColor() As Color
        Get
            Return MyBase.BackColor
        End Get
        Set(ByVal Value As Color)
            If Not m_backBrush Is Nothing Then
                m_backBrush.Dispose()
            End If
            MyBase.BackColor = Value
            m_backBrush = New SolidBrush(Me.BackColor)
            Me.Invalidate()
        End Set
    End Property

    Protected Overrides Sub WndProc(ByRef m As Message)
        Const WM_ERASEBKGND As Int32 = &H14

        If m.Msg = WM_ERASEBKGND Then
            Dim g As Graphics = Graphics.FromHdc(m.WParam)
            If m_backBrush Is Nothing Then
                m_backBrush = New SolidBrush(Me.BackColor)
            End If
            g.FillRectangle(m_backBrush, Me.ClientRectangle)
            g.Dispose()
        Else
            MyBase.WndProc(m)
        End If
    End Sub

    Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
        If disposing AndAlso Not m_backBrush Is Nothing Then
            m_backBrush.Dispose()
        End If
        MyBase.Dispose(disposing)
    End Sub

End Class

A voir également

Ajouter un commentaire

Commentaires

sebmafate
Messages postés
4947
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
30 -
bien... mais petite remarque :
déplace la ligne : Const WM_ERASEBKGND As Int32 = &H14 de ton WndProc dans les déclarations globales.
cs_lemulot
Messages postés
5
Date d'inscription
jeudi 17 avril 2003
Statut
Membre
Dernière intervention
24 novembre 2005
-
Excellent, mais ForeColor maintenant... ça risque d'être une autre pair de manche.
cs_Rolan
Messages postés
4
Date d'inscription
lundi 29 mars 2004
Statut
Membre
Dernière intervention
8 août 2010
-
Je ne sais pas comment peut être appliqué à un datetimepicker en vb.net
Commenter la réponse de sebmafate

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.