+ Répondre à la discussion
Affichage des résultats 1 à 4 sur 4

Discussion: soucis avec DataGridView [Débutant]

  1. #1
    Invité de passage
    Homme Profil pro
    Ingénieur Biomédical
    Inscrit en
    octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur Biomédical
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2012
    Messages : 19
    Points : 4
    Points
    4

    Par défaut soucis avec DataGridView

    Bonjour,

    J'ai fait un datagridview alimenté par un datatable pour afficher un tableau type feuille de donnée excel dans une fenetre. Ca fonctionne, sauf pour les lignes mises en commentaire et je ne comprends pas pourquoi.

    1) les lignes en commentaires 1 sont destinées à masquer deux colonnes, mais si je les laisse, j'ai une fenetre avec une croix rouge dedans.

    2) Dans le commentaire 2, il s'agit de modifier la cosmétique des lignes, mais le nombre de ligne du datagridview est toujours à zéro (dg.Rows.Count) alors que j'ai bien n lignes d'affichées et n lignes dans mon datatable...

    Voilà, d'avance merci pour votre aide !

    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
     
            private void FormModifSuppr_Paint(object sender, PaintEventArgs e)
            {
                DataGridView dg = new DataGridView();
     
                dg.DataSource = ClassDataTable.LeTableauHorairesPresence;
                dg.Size = new Size(1500, 800);
     
                dg.AllowUserToAddRows = false;
                dg.AllowUserToDeleteRows = true;
     
                dg.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.DisplayedCells;
                dg.AutoResizeColumns();
     
                /* Commentaire 1
                dg.Columns["ModuleDepart"].Visible = false;
                dg.Columns["CouleurIntervenant"].Visible = false;
                */
     
                /* Commentaire 2
                for (int i = 0; i < dg.Rows.Count; i++) 
                {
                   dg.Rows[i].DefaultCellStyle.BackColor = Color.Yellow;
                }
                */
     
                this.Controls.Add(dg);
     
            }

  2. #2
    Expert Confirmé Sénior Avatar de Graffito
    Inscrit en
    janvier 2006
    Messages
    5 989
    Détails du profil
    Informations forums :
    Inscription : janvier 2006
    Messages : 5 989
    Points : 7 757
    Points
    7 757

    Par défaut

    Pour le commentaire 1 : d'une façon générale, ces modifications ne doivent pas être faites dans l'event Paint.

    Idem pour le commentaire 2, en sachant que si l'on veut afficher des BackColor variables suivant le contenu de la ligne ou de la cellule, on utilisera l'event CellFormatting
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  3. #3
    Membre confirmé
    Homme Profil pro
    Chef de Projet
    Inscrit en
    décembre 2012
    Messages
    111
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef de Projet
    Secteur : Associations - ONG

    Informations forums :
    Inscription : décembre 2012
    Messages : 111
    Points : 245
    Points
    245

    Par défaut

    Bonsoir,

    Point 1 :
    Les colonnes sont a priori générées automatiquement. Es-tu sur du nom de tes colonnes ?

    Point 2 :
    Une source possible du problème est qu'à chaque événement Paint, tu créés une nouvelle DataGridView que tu affectes à ton control. Comme souligné par Graffito, commence par supprimer toutes ces actions de la gestion de l'événement Paint (Paint = dessin, et non initialisation puis dessin), et créé et initialise ton DataGridView en dehors.

  4. #4
    Invité de passage
    Homme Profil pro
    Ingénieur Biomédical
    Inscrit en
    octobre 2012
    Messages
    19
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Ingénieur Biomédical
    Secteur : Santé

    Informations forums :
    Inscription : octobre 2012
    Messages : 19
    Points : 4
    Points
    4

    Par défaut

    Merci beaucoup, je vais faire ces modifs... Je me suis également aperçu que si je mets la ligne "this.Controls.Add(dg);" avant les parties en commentaire, çà marche.

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