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 :

backColor et foreColor lignes DataGrid ne persistent pas


Sujet :

VB.NET

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 211
    Par défaut backColor et foreColor lignes DataGrid ne persistent pas
    Bonjour,

    J'arrive à coloriser (background et font) les lignes de mon DataGrid si besoin mais, elles ne sont plus en couleur après la réouverture de l'application. Je vous remercie pour votre aide.

    J'enregistre mes couleurs :
    Code vb : 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
    Private Sub SaveColorAndFont(rowIndex As Integer, backColor As String, foreColor As String)
        Dim lines As New List(Of String)
        If File.Exists("couleurs.ini") Then
            lines = File.ReadAllLines("couleurs.ini").ToList()
        End If
     
        ' Update if exists
        Dim updated = False
        For i As Integer = 0 To lines.Count - 1
            Dim parts = lines(i).Split(";"c)
            If parts(0) = rowIndex.ToString() Then
                parts(1) = backColor
                parts(2) = foreColor
                lines(i) = String.Join(";", parts)
                updated = True
                Exit For
            End If
        Next
     
        ' Add new if not updated
        If Not updated Then
            lines.Add($"{rowIndex};{backColor};{foreColor}")
        End If
     
        File.WriteAllLines("couleurs.ini", lines)
    End Sub

    Dans couleurs.ini cela enregistre bien une couleur de fond et de police à ma 3ème ligne :

    2;MediumSeaGreen;White:

    Je charge les couleurs au démarrage :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
        Private Sub LoadColorAndFontConfigurations()
            If File.Exists("couleurs.ini") Then
                Dim lines = File.ReadAllLines("couleurs.ini")
                For Each line As String In lines
                    Dim parts = line.Split(";"c)
                    Dim rowIndex = Integer.Parse(parts(0))
                    Dim backColor = parts(1)
                    Dim foreColor = parts(2)
                    If rowIndex < DataGridView1.Rows.Count Then
                        DataGridView1.Rows(rowIndex).DefaultCellStyle.BackColor = ColorTranslator.FromHtml(backColor)
                        DataGridView1.Rows(rowIndex).DefaultCellStyle.ForeColor = ColorTranslator.FromHtml(foreColor)
                    End If
                Next
            End If
        End Sub

    Dans Form_Load :
    Code vb : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            InitialiserDataGridView()
            ChargerDonneesExistantes()
            LoadColorAndFontConfigurations()
    Nom : 1.png
Affichages : 161
Taille : 79,3 Ko
    Nom : 2.png
Affichages : 158
Taille : 87,8 Ko

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Septembre 2010
    Messages
    1 539
    Détails du profil
    Informations personnelles :
    Âge : 46
    Localisation : France

    Informations forums :
    Inscription : Septembre 2010
    Messages : 1 539
    Par défaut
    Il faut peut-être décaler la coloration des lignes un peu après le chargement de la Form.
    D'après ce sujet SO https://stackoverflow.com/questions/...the-first-load
    il faudrait le faire dans l'événement DataBindingComplete ou l'événement Form_Shown.
    Peut-être une autre possibilité, lancer un timer de quelques millisecondes à la fin du Form_load et dans son évement Tick, lancer la coloration (et désactiver le timer).

  3. #3
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Juin 2011
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2011
    Messages : 211
    Par défaut
    Super, je l'ai placé dans Private Sub Form1_Shown et ça fonctionne bien.

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

Discussions similaires

  1. [VB.net] Changer couleur ligne DataGrid
    Par bguihal dans le forum Windows Forms
    Réponses: 7
    Dernier message: 22/07/2016, 06h54
  2. Double clique sur ligne d'un datagrid ne fonctionne pas sur ecran tactile
    Par slacky dans le forum Windows Presentation Foundation
    Réponses: 0
    Dernier message: 07/05/2012, 16h43
  3. [VB.net] selectionner une ligne DataGrid
    Par MichMich29 dans le forum ASP.NET
    Réponses: 11
    Dernier message: 31/05/2007, 20h36
  4. [VB.NET] ComboBox/Datagrid enabled mais pas en saisie
    Par Cereal123 dans le forum Windows Forms
    Réponses: 6
    Dernier message: 10/09/2004, 14h11
  5. Dimension lignes DataGrid
    Par bakaneko dans le forum MFC
    Réponses: 2
    Dernier message: 19/02/2004, 14h40

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