IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

Controle Utilisateur (UserControl)


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut Controle Utilisateur (UserControl)
    Bonjour,

    Je suis sur la création d'un usercontrol type calendrier personnalisé. Je simplifie le projet pour exposer mon problème
    Sur le usercontrol Calendrier il y a 31 labels (Label1...Label32)
    Code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    Public Class Calendrier
     
        Private _cellClicked As CellDay
        Private nbDays As Int16
     
        Private _Cells() As CellDay
     
        Public Shadows Event Click(ByVal sender As Object, ByVal e As EventArgs, ByVal day As CellDay)   ' occurs when user click on a day
     
        Public Class CellDay
     
            Public Property Cell As Label
            Public Property CellDate As DateTime
            Public Property CellColor As Color
     
        End Class
     
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            nbDays=31    ' je simplifie l'exemple en prenant un mois fixe de 31 jours
     
            DrawDays()
     
        End Sub
     
        Public Property Days(ByVal Index As Integer) As CellDay
            Get
                Return _Cells(Index)
            End Get
            Set(value As CellDay)
                _Cells(Index) = value
     
                 SetCellBackground(Index, value.CellColor)
     
            End Set
        End Property
     
     
        Private Sub DayClickHandler(ByVal sender As Object, ByVal e As System.EventArgs)
            Dim Jour As Int16
     
            Jour = CInt(CType(sender, Label).Text)
     
            _cellClicked = _Cells(Jour)
     
            RaiseEvent Click(sender, e, _cellClicked)
        End Sub
     
     
        Private Sub SetCellBackground(ByVal Index As Int16, Couleur As Color)
            Dim lblRef As Label
     
            lblRef = Me.Controls("Label" & Index.ToString)
            lblRef.BackColor = Couleur
            _Cells(Index).CellColor = Couleur
     
        End Sub
     
     
     
        Private Sub DrawDays()
            Dim i As Int16
            Dim lblRef As Label
     
            ReDim _Cells(31 + 1)    ' je veux pouvoir compter de 1 à 31   (exemple simplifié)
     
     
            For i = 1 To nbDays
     
                lblRef = Me.Controls("Label" & (i).ToString)              'donne al position de la colonne jour correspondant
                lblRef.Text = i.ToString
                _Cells(i) = New CellDay With {.Cell = lblRef, .CellDate = Date.Parse(i.ToString & "/" & _month.ToString & "/" & _year.ToString), .CellColor = _bgcolor}
     
                AddHandler lblRef.Click, AddressOf DayClickHandler
            Next
     
        End Sub
     
    End Class
    Ce usercontrol (simplifié hein!) affichera 31 labels dont leur texte= "1"... "31"
    Je veux pouvoir changer chacun leur background. Pour cela je fais appel à la propriété Calendrier.Days(Index).CellColor (où Index est un entier 1..31)

    Donc dans une Form où je place mon Calendrier et un Bouton1 avec le code:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub Button1_Click(sender As System.Object, e As System.EventArgs) Handles Button1.Click
            Calendrier1.Days(15).CellColor = Color.AliceBlue
        End Sub
    et dans l'évenement Click:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Calendrier1_Click(sender As Object, e As System.EventArgs, day As Calendrier.CellDay) Handles Calendrier1.Click
            MsgBox(day.Cell.ToString & " : " & day.CellColor.ToString)
     End Sub
    Lorsque je lance le programme, il m'affiche donc les 31 jours avec le background par défaut. Si je clique sur Calendrier1, il m'affiche le message avec la couleur par défaut. OK

    Je clique sur Bouton1, puis sur Calendrier1, il m'affiche alors bien "Alice blue" MAIS le background n'a pas changé!

    En passant en mode débug avec point d’arrêt, lorsque je clique sur Bouton1, je m'aperçois qu'il va dans la partie "Get" de la property Days avec le bon index mais pas dans la partie "Set" et donc ne va pas dans le sub SetCellBackground

    Comment se fait il?

    PS: au cas où, je joins le projet (plus développé que dans mon explication ci dessus)

    Merci

    Olivier
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip DTR.zip (173,9 Ko, 491 affichages)

  2. #2
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Bonjour,
    C'est normal, il n'y a aucune raison que le programme passe par le setter de la propriété Days(index).

    Lorsque tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendrier1.Days(15).CellColor = Color.AliceBlue
    tu affectes la propriété CellColor de Days(15), tu n'affectes pas Days(15). Il ne passe donc pas dans le setter. Je n'ai pas regardé le code en détail mais tu peux éventuellement prévoir un event dans ta classe CellDay qui sera levé lors de l'affectation d'une de ses propriétés afin d'indiquer au control de se raffraichir (un peu à la façon de l'utilisation de l'interface INotifyPropertyChanged mais je ne sais pas si ça s'adapte à ton cas)

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Bonjour,
    C'est normal, il n'y a aucune raison que le programme passe par le setter de la propriété Days(index).

    Lorsque tu fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendrier1.Days(15).CellColor = Color.AliceBlue
    tu affectes la propriété CellColor de Days(15), tu n'affectes pas Days(15). Il ne passe donc pas dans le setter. Je n'ai pas regardé le code en détail mais tu peux éventuellement prévoir un event dans ta classe CellDay qui sera levé lors de l'affectation d'une de ses propriétés afin d'indiquer au control de se raffraichir (un peu à la façon de l'utilisation de l'interface INotifyPropertyChanged mais je ne sais pas si ça s'adapte à ton cas)
    Merci pour ta réponse. Je débute donc, si je comprends bien, j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendrier1.Days(15).CellColor = new Days with {.CellColor=Color.AliceBlue,....}
    cela aurait marché?

    Maintenant pour ce qui est de ta proposition, dois-je seulement ajouter les instructions suivantes?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
        Implements INotifyPropertyChanged
     
        Public Event PropertyChanged As PropertyChangedEventHandler _
            Implements INotifyPropertyChanged.PropertyChanged
     
        Private Sub NotifyPropertyChanged(<CallerMemberName()> Optional ByVal propertyName As String = Nothing)
            RaiseEvent PropertyChanged(Me, New PropertyChangedEventArgs(propertyName))
        End Sub
     
        Public Property CellColor(Index as int16) As Color
            Get
                Return _Cells(Index).CellColor
            End Get
     
            Set(ByVal value As Color)
                If Not (value = _Cells(Index).CellColor) Then
                    _Cells(Index).CellColor = value
                    NotifyPropertyChanged()
                End If
            End Set
        End Property
     
        Public Property CellText(Index as int16) As string
            Get
                Return _Cells(Index).CellText
            End Get
     
            Set(ByVal value As string)
                If Not (value = _Cells(Index).CellText) Then
                    _Cells(Index).CellText = value
                    NotifyPropertyChanged()
                End If
            End Set
        End Property
     
    .....
    Si c'est le cas comment lui dire d'aller dans un Sub ChangeColor quand on modifie CellColor et dans un autre Sub ChangeText si on modifier le texte (il faut bien modifier le texte/couleur du Label correspondant à Index)

    Merci

    Olivier

  4. #4
    Membre Expert
    Homme Profil pro
    Développeur .Net / Delphi
    Inscrit en
    Juillet 2002
    Messages
    738
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Développeur .Net / Delphi
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2002
    Messages : 738
    Par défaut
    Citation Envoyé par zitoune92 Voir le message
    ...si je comprends bien, j'aurais fait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendrier1.Days(15).CellColor = new Days with {.CellColor=Color.AliceBlue,....}
    cela aurait marché?
    Non, encore une fois tu affectes la propriété CellColor, donc c'est le setter de CellColor (s'il existe) qui sera appelé. En plus, CellColor n'est pas de type Days

    Concernant l'interface INotifyPropertyChanged, c'est une interface utilisée en WPF (je ne sais pas pour Winform) qui permet de notifier automatiquement l'affichage qu'une propriété bindé a changé ce qui permet la mise à jour de l'affichage. Cette interface est très liée au Binding. Toutefois l'idée est là. Comme c'est le calendrier qui est en charge de mettre à jour l'affichage, il faut qu'il s'abonne à l'évènement levé par ta classe CellDay. Globalement ça ressemble à ce que tu as fais. Si tu conserves l'utilisation de l'interface il reste juste l'abonnement à l'event à coder (AddHandler) et le désabonnement (RemoveHandler). Mais je pense que le mieux serait de créer ton propre évènement afin de bien comprendre comment ça fonctionne.

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    Citation Envoyé par ebastien Voir le message
    Non, encore une fois tu affectes la propriété CellColor, donc c'est le setter de CellColor (s'il existe) qui sera appelé. En plus, CellColor n'est pas de type Days

    Concernant l'interface INotifyPropertyChanged, c'est une interface utilisée en WPF (je ne sais pas pour Winform) qui permet de notifier automatiquement l'affichage qu'une propriété bindé a changé ce qui permet la mise à jour de l'affichage. Cette interface est très liée au Binding. Toutefois l'idée est là. Comme c'est le calendrier qui est en charge de mettre à jour l'affichage, il faut qu'il s'abonne à l'évènement levé par ta classe CellDay. Globalement ça ressemble à ce que tu as fais. Si tu conserves l'utilisation de l'interface il reste juste l'abonnement à l'event à coder (AddHandler) et le désabonnement (RemoveHandler). Mais je pense que le mieux serait de créer ton propre évènement afin de bien comprendre comment ça fonctionne.
    Ouh la ... c'est encore bien obscur pour moi. Pourrais-je abuser en te demandant le code pour mon exemple (juste la proprété CellColor). Un bon dessin valant mieux qu'un discours. Je te promets d'analyser cela ensuite pour bien comprendre.

    Sinon, si je ne veux pas perdre mes derniers cheveux, et prenant en compte mes compétences qui atteignent leur limite il semble , il vaudrait mieux que j'"explose" ma classe Days en 2 propriétés: CellColor(Index), CellText(Index). Ça sera moins beau mais c'est à ma portée

    Merci d'avance

    Olivier

  6. #6
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    Comme dit par ebastien , c'est l'instance de CellDay à l'index donné qui est affecté , qu'il faut revoir ...
    Car c'est lui qui est affecté par le changt de propriété...Color....

    Pour cela il doit déclarer simplement un Event dont l'argument est hérité du class EventArgs mais avec signature souhaite (Color et String) ...

    voici un code revu qui fonctionne et qui decrit la methode à suivre :
    code .vb
    1/du class Item avec Event ,ainsi que son class ItemArgs (equivalent du CellDay)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     
    Public Class Item
        Public Event PropertyItemChanged As EventHandler(Of ItemArgs)
        Private _nom As String
        Public Property Nom As String
            Get
                Return _nom
            End Get
            Set(ByVal value As String)
                _nom = value
                OnItemCPropertyChanged()
            End Set
        End Property
        Private _color As Color
        Public Property Color As Color
            Get
                Return _color
            End Get
            Set(ByVal value As Color)
                _color = value
                OnItemCPropertyChanged()
            End Set
        End Property
        Private Sub OnItemCPropertyChanged()
            RaiseEvent PropertyItemChanged(Me, New ItemArgs(Me.Nom, Me.Color))
        End Sub
    End Class
    Public Class ItemArgs
        Inherits EventArgs
        Public Sub New(ByVal pnom As String, ByVal pcolor As Color)
            Nom = pnom
            Color = pcolor
        End Sub
        Public Property Nom As String
        Public Property Color As Color
     
    End Class
     
    Public Class Items
        Inherits Collection(Of Item)
        Public Sub New()
        End Sub
    End Class
    2/le class Items derivé de Collection(of Item)
    Il remplace ton array _Cells qu'il faut virer fissa !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
     
    Imports System.Collections.ObjectModel
     
    Public Class Items
        Inherits Collection(Of Item)
        Public Sub New()
        End Sub
    End Class
    3/ le UserControl qui mimique le tiens !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
     
    Public Class MyControl
        Inherits UserControl
        Private nbDays As Int16 = 5 'TTENTION IL FAUT DROPPER 5 CONTROLS LABEL DESSUS
        Public Property Items As Items = New Items
     
        Public Sub New()
     
            ' Cet appel est requis par le concepteur.
            InitializeComponent()
     
            ' Ajoutez une initialisation quelconque après l'appel InitializeComponent().
            DrawDays()
     
        End Sub
     
        Private Sub DrawDays()
            Dim i As Int16
            Dim lbl As Label
     
     
            For i = 0 To nbDays - 1
     
                Dim item As Item = New Item With {
                    .Nom = "item", .Color = Color.Beige}
                Items.Add(item)
                lbl = Me.Controls("Label" & (i + 1).ToString)              'donne al position de la colonne jour correspondant
                lbl.Text = (i + 1).ToString
                lbl.BackColor = item.Color
                AddHandler item.PropertyItemChanged, AddressOf ItemPropChanged
            Next
        End Sub
        Private Sub ItemPropChanged(ByVal sender As Object, ByVal args As ItemArgs)
            Dim index As Integer = Items.IndexOf(CType(sender, Item))
            SetCellBackgroundAndName(index, args)
        End Sub
        Private Sub SetCellBackgroundAndName(ByVal Index As Int16, ByVal args As ItemArgs)
            Dim lblRef As Label
     
            lblRef = Me.Controls("Label" & Index.ToString)
            lblRef.BackColor = args.Color
            lblRef.Text = args.Nom
     
        End Sub
    End Class
    Et le code .vb du Form User :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            MyControl1.Items.Item(3).Color = Color.Aquamarine
            MyControl1.Items.Item(3).Nom = "coucou"
        End Sub
    On peut setter les 2 props ou l'une au choix....
    bon code...

  7. #7
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    re
    Mes cheveux à moi ,sont bien grisonnants et les tiens sont encore noirs ou blonds mais tu dois savoir une chose : il faut qu'il blanchisse en faisant quelque chose plutôt que de ne rien faire !!!

  8. #8
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    Citation Envoyé par MABROUKI Voir le message
    re
    Mes cheveux à moi ,sont bien grisonnants et les tiens sont encore noirs ou blonds mais tu dois savoir une chose : il faut qu'il blanchisse en faisant quelque chose plutôt que de ne rien faire !!!
    Moi, c'est les blancs qui tombent...

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    Merci pour ton temps passé.

    Entre le 1er bloc de code et le second, il me semble que la classe Items soit déclarée 2 fois. J'ai donc supprimé les lignes 40 à 44 du bloc1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Class Items
        Inherits Collection(Of Item)
        Public Sub New()
        End Sub
    End Class
    Dans une application, j'ai donc créé les 2 classes (blocs 1 & 2), 1 Usercontrol (bloc 3) et 1 Forme.
    La génération se passe bien, mais quand je lance le programme, j'ai 5 erreurs de syntaxe (code BC0035) au niveau des lignes en rouges dans Form1.Designer.vb

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     'UserControl21
            '
            Item1.Color = System.Drawing.Color.Beige
            Item1.Nom = "item"
            Item2.Color = System.Drawing.Color.Beige
            Item2.Nom = "item"
            Item3.Color = System.Drawing.Color.Beige
            Item3.Nom = "item"
            Item4.Color = System.Drawing.Color.Beige
            Item4.Nom = "item"
            Item5.Color = System.Drawing.Color.Beige
            Item5.Nom = "item"
            New WindowsApplication1.Items().Add(Item1)
            New WindowsApplication1.Items().Add(Item2)
            New WindowsApplication1.Items().Add(Item3)
            New WindowsApplication1.Items().Add(Item4)
            New WindowsApplication1.Items().Add(Item5)
            Me.UserControl21.Location = New System.Drawing.Point(35, 29)
            Me.UserControl21.Name = "UserControl21"
     .....
    Le mot New est souligné en rouge. Pourtant ce code est généré automatiquement non?

    Olivier

  10. #10
    Membre extrêmement actif
    Inscrit en
    Avril 2008
    Messages
    2 573
    Détails du profil
    Informations personnelles :
    Âge : 65

    Informations forums :
    Inscription : Avril 2008
    Messages : 2 573
    Par défaut
    bonjour

    La prop Items étant un Collection( héritant de IEnumerable ) doit être décorée de l'attribut :
    - <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
    Sinon le zélé Designer VS qui inspecte tout ,après avoir constaté que le nbre d'items n'est pas nul (5) va encore générer un code dupliqué pour instancier 5 autres items ,d'ou l'erreur en rouge...
    La valeur par défaut de l'attribut cité ci-dessus pour les props héritant IEnumerable :
    -<DesignerSerializationVisibility(DesignerSerializationVisibility.Content)> Content signifie qu'il doit générer le code d'instanciation ....

    le fait de spécifier Hidden a pour effet une autre conséquence importante : Les items ajoutés par code dans Days sont affichés dans l'éditeur de propriétés...
    Neamoins l' 'ajout d'autres items dans l'éditeur de propriétés n'est pas pris en ligne compte, car aucun code ne sera généré par le Designer...

    modif à apporter à UserControl :
    code .vb
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    Imports System
    Imports System.ComponentModel
     
    Public Class MyControl
        Inherits UserControl
        Private nbDays As Int16 = 5 'ATTENTION IL FAUT DROPPER 5 CONTROLS LABEL DESSUS
     
        <DesignerSerializationVisibility(DesignerSerializationVisibility.Hidden)>
        Public Property Items As Items
     
    'le reste sans chgt....
     
    End Class
    Bon code...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    ça ne change rien. Toujours ces mêmes erreurs.

    Bon, j'ai repris le problème.
    Quand dans ma forme je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Calendrier1.Days(3).CellColor = Color.AliceBlue
    Je passe bien dans le sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Private Sub OnItemCPropertyChanged()
            RaiseEvent PropertyItemChanged(Me, New ItemArgs(_label, _date, _color, _hasimage))
        End Sub
    Au niveau de mon usercontrol, cela déclenche bien le sub
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub ItemPropChanged(ByVal sender As Object, ByVal args As ItemArgs)
      Dim index As Integer = _Cells.IndexOf(CType(sender, CellDay))
      SetCellBackgroundAndName(index, args.CellColor)
    End Sub
    Sauf que index me retourne 0...

    Pour faire un test, j'ai modifié le code comme suit:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ItemPropChanged(ByVal sender As Object, ByVal args As ItemArgs)
      Me.controls("Label1").BackColor= args.CellColor)
    End Sub
    Mais bien que args.CellColor soit à AliceBlue par exemple (tel que je le vois en mode debug), le Label1 s'affiche alors...en blanc!

    Alors que si je force la couleur, ça marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ItemPropChanged(ByVal sender As Object, ByVal args As ItemArgs)
      Me.controls("Label1").BackColor=Color.Gray
    End Sub
    Je suis un peu perdu là...

  12. #12
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2004
    Messages
    169
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2004
    Messages : 169
    Par défaut
    En fait comme son nom l'indique AliceBlue.... est une nuance de blanc . Je me suis fait avoir comme un bleu (ah pas mal celle là)
    Bref...ça marche

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. MonoDevelop & UserControl (control utilisateur)
    Par mczikas dans le forum MonoDevelop
    Réponses: 2
    Dernier message: 30/03/2007, 13h39
  2. [VB.Net] Regrouper des controles utilisateurs
    Par Jsh dans le forum Windows Forms
    Réponses: 4
    Dernier message: 07/04/2006, 13h39
  3. [VB]Gérer la liaison entre controle utilisateur et form
    Par Ooly2001 dans le forum VB 6 et antérieur
    Réponses: 19
    Dernier message: 23/01/2006, 09h50
  4. Réponses: 4
    Dernier message: 17/01/2006, 09h49
  5. Réponses: 68
    Dernier message: 30/11/2005, 17h29

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo