none
Marge intérieure droite dans une cellule de DataGridView (anciennement : Désigner une colonne par son nom)

    Question

  • Bonjour tout le monde,

    Concernant les colonnes d'une DataGridView, l'intellisense laisse entendre qu'on peut les désigner ou par leurs index, ou par leurs noms.

    J'ai essayé d'utiliser le nom, en passant le contenu de la propriété DataPropertyName, et il m'a été objecté que cette entité n'existait pas.

    Faut-il y mettre un autre intitulé, ou faut-il comprendre que l'intellisense est un peu présomptueux sur ce coup ?

    J'aurais une préférence pour la première hypothèse : j'avais formaté une colonne pour l'alignement (en la désignant par son index), et comme j'ai dû décaler une autre colonne vers la gauche, finalement le formatage valait pour la colonne suivante, donc c'était inadapté.

    Comme vous avez deviné je parle d'un projet Winform en C#.




    • Modifié Gloops lundi 11 décembre 2017 14:57
    lundi 11 décembre 2017 14:25

Réponses

  • J'ai trouvé !

    Dans le module Designer du formulaire, j'ai vu que la colonne montant est désignée par montantDataGridViewTextBoxColumn.

    J'ai donc pu coder :

    montantDataGridViewTextBoxColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

    J'ai constaté ensuite que cet objet a une propriété Name, qui du reste vaut "montantDataGridViewTextBoxColumn", et que c'est ça qu'il faut passer comme nom pour désigner la colonne, de cette façon :

    grdView.Columns["montantDataGridViewTextBoxColumn"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

    *

    Bon, maintenant que j'ai répondu à ma première question, j'en aurais une autre : j'aimerais mettre une marge à droite de cette cellule (une marge intérieure, donc PaddingRight), mais la propriété, qui existe (.DefaultCellStyle.Padding.Right), est en lecture seule.

    Pas possible ?



    lundi 11 décembre 2017 14:56
  • J'ai trouvé aussi pour la deuxième question.

    Le padding est en lecture seule à l'exécution, mais au moment du développement on peut le paramétrer via la boîte de dialogue "Modifier les colonnes" accessible par la balise active dans le coin supérieur droit de la DataGridView.

    Commencer par sélectionner la colonne voulue à gauche de la boîte de dialogue, puis à droite défiler vers le haut pour atteindre la propriété DefaultCellStyle. En cliquant dedans on voit apparaître un bouton avec un point de suspension. Cliquer dessus, ce qui fait apparaître une autre boîte de dialogue, "Générateur CellStyle"

    Là-dedans il est possible de sélectionner un format numérique dans la catégorie Comportement, et un "Padding" dans la catégorie disposition.

    Attention, les composantes du padding (marge intérieure sur les quatre côtés de la cellule) ne sont pas ordonnées dans l'ordre auquel sont habitués les développeurs web. C'est un ordre plus intuitif, mais ça ne peut pas être les deux. A l'aide d'une flèche à gauche on peut dérouler un tableau qui explicite les rôles des différents nombres qu'on est invité à saisir.

    Une fois que c'est fait il n'y a plus qu'à valider les différentes boîtes de dialogue.


    • Marqué comme réponse Gloops jeudi 21 décembre 2017 15:05
    • Modifié Gloops jeudi 21 décembre 2017 15:27
    jeudi 21 décembre 2017 15:03

Toutes les réponses

  • J'ai trouvé !

    Dans le module Designer du formulaire, j'ai vu que la colonne montant est désignée par montantDataGridViewTextBoxColumn.

    J'ai donc pu coder :

    montantDataGridViewTextBoxColumn.DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

    J'ai constaté ensuite que cet objet a une propriété Name, qui du reste vaut "montantDataGridViewTextBoxColumn", et que c'est ça qu'il faut passer comme nom pour désigner la colonne, de cette façon :

    grdView.Columns["montantDataGridViewTextBoxColumn"].DefaultCellStyle.Alignment = DataGridViewContentAlignment.MiddleRight;

    *

    Bon, maintenant que j'ai répondu à ma première question, j'en aurais une autre : j'aimerais mettre une marge à droite de cette cellule (une marge intérieure, donc PaddingRight), mais la propriété, qui existe (.DefaultCellStyle.Padding.Right), est en lecture seule.

    Pas possible ?



    lundi 11 décembre 2017 14:56
  • Bonjour Gloops, 

    Pouvez vous montrer un peu de code sur comment le DataGridView est remplie et comment vous utilisez la propriété DataPropertyName ?

    Merci d'avance

    Cordialement,

    lundi 11 décembre 2017 14:58
  • Bonjour,

    En fait, le DataPropertyName n'est pas initialisé par code en C#, mais c'est l'entête de colonne déterminé par la requête passée à la DataSource.

    Donc, en définitive, le code utilisé est l'attribut "AS" dans la requête SQL.

    Peut-être existe-t-il un intérêt à modifier cette propriété sous C#, mais c'est une piste que je n'ai pas explorée. ça me paraît d'ailleurs a priori peu probable.


    Au demeurant j'ai fait un test en mettant un intitulé farfelu dans cette propriété : la colonne est alors vide.
    • Modifié Gloops lundi 11 décembre 2017 15:12
    lundi 11 décembre 2017 15:05
  • J'ai trouvé aussi pour la deuxième question.

    Le padding est en lecture seule à l'exécution, mais au moment du développement on peut le paramétrer via la boîte de dialogue "Modifier les colonnes" accessible par la balise active dans le coin supérieur droit de la DataGridView.

    Commencer par sélectionner la colonne voulue à gauche de la boîte de dialogue, puis à droite défiler vers le haut pour atteindre la propriété DefaultCellStyle. En cliquant dedans on voit apparaître un bouton avec un point de suspension. Cliquer dessus, ce qui fait apparaître une autre boîte de dialogue, "Générateur CellStyle"

    Là-dedans il est possible de sélectionner un format numérique dans la catégorie Comportement, et un "Padding" dans la catégorie disposition.

    Attention, les composantes du padding (marge intérieure sur les quatre côtés de la cellule) ne sont pas ordonnées dans l'ordre auquel sont habitués les développeurs web. C'est un ordre plus intuitif, mais ça ne peut pas être les deux. A l'aide d'une flèche à gauche on peut dérouler un tableau qui explicite les rôles des différents nombres qu'on est invité à saisir.

    Une fois que c'est fait il n'y a plus qu'à valider les différentes boîtes de dialogue.


    • Marqué comme réponse Gloops jeudi 21 décembre 2017 15:05
    • Modifié Gloops jeudi 21 décembre 2017 15:27
    jeudi 21 décembre 2017 15:03