Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Hauteur de ligne automatique dans un datagrid

5 réponses
Avatar
Benoit
Bonjour,

Actuellement j'alimente un DataGrid avec un datatable que je crée
manuellement depuis des accès base.
Depuis visual Studio, j'ai définis le style de la table ainsi que les
colonnes associées au datagrid.
Lorsque je fais des tests, tout fonctionne correctement => mon datagrid
affiche correctement mes données, si ce n'est que maintenant j'ai des infos
à afficher dans une cellule qui tiennent sur plusieurs lignes.
Je pense que la solution la plus simple est d'adapter la hauteur de la ligne
concernée, mais je ne trouve pas comment je peux réaliser cette opération..
De plus, est-il possible de parametrer la hauteur des lignes d'un datagrid
en "AUTOMATIQUE" ?


Merci pour toute information.

5 réponses

Avatar
Pierre TCHEKOUTEU [SELF-INFORMATIQUE]
Bonjour,

Cela devrait être possible en utilisant la classe "DataGridTexboxColumn"
comme style de colonnes pour les champs concernés du dataGrid.
Ensuite il faudrait gérer les propriétés "Multiline=true" et "WordRap=true"
du contrôle TextBox associé au "DataGridTexboxColumn" .
Cela devrait marcher, je ne l'ai pas testé. Ce qui sûr c'est qu'il est
possible de créer sa propre classe dérivée de "DataGridTexboxColumn" en
implémentant toutes les fonctionnalités voulue et/ou en surchargeant la
méthode "OnPaint()".

@+



"Benoit" a écrit dans le message de
news:%
Bonjour,

Actuellement j'alimente un DataGrid avec un datatable que je crée
manuellement depuis des accès base.
Depuis visual Studio, j'ai définis le style de la table ainsi que les
colonnes associées au datagrid.
Lorsque je fais des tests, tout fonctionne correctement => mon datagrid
affiche correctement mes données, si ce n'est que maintenant j'ai des


infos
à afficher dans une cellule qui tiennent sur plusieurs lignes.
Je pense que la solution la plus simple est d'adapter la hauteur de la


ligne
concernée, mais je ne trouve pas comment je peux réaliser cette


opération..
De plus, est-il possible de parametrer la hauteur des lignes d'un datagrid
en "AUTOMATIQUE" ?


Merci pour toute information.




Avatar
Benoit
Merci pour l'info, mais cela ne change pas la hauteur de ma ligne
J'ai bien l'info sur plusieurs lignes, mais il faut que j'augmente
manuellement la hauteur de la ligne dans le datagrid pour que je vois toutes
les données associées à la cellule.

J'ai fais plusieurs recherches sur le net, mais je n'ai rien trouvé (pour
une appli winform)
Avatar
Pierre TCHEKOUTEU [SELF-INFORMATIQUE]
c'est vrai,
essaye de modifier la propriété "Height" du textbox situé dans ton
DataGridTextBoxColumn.
le problème est que cette hauteur sera la même pour toutes les lignes.

- il ne reste qu'à dériver la classe "DataGridTextBoxColumn".
- surcharger la méthode OnPaint.
- fixer une largeur standard pour les colonnes.
- Utiliser Graphics.Measuring() pour mésurer la longueur du texte en
fonction de la largeur standard de la colonne,
- en définir un rectangle approprié dans chaque cas (doubler ou tripler la
hauteur du rectangle selon la longueur du texte)
- utiliser Graphics.DrawString(...) dans les rectangles appropriés.

si tu n'a pas trouvé d'ici demain, je t'enverrai un exemple de classe que
j'ai utilisé dans les mêmes circonstances.
Désolé je l'ai sur un autre pc qui n'est pas ici. (trop long pour tout
retaper maintenant)

@+


"Benoit" a écrit dans le message de
news:
Merci pour l'info, mais cela ne change pas la hauteur de ma ligne
J'ai bien l'info sur plusieurs lignes, mais il faut que j'augmente
manuellement la hauteur de la ligne dans le datagrid pour que je vois


toutes
les données associées à la cellule.

J'ai fais plusieurs recherches sur le net, mais je n'ai rien trouvé (pour
une appli winform)




Avatar
Benoit
Merci.

Il me semble avoir vu un tel exemple dans msdn.
Sinon, pour l'instant, je laisse tomber, c'est encore trop complexe pour moi
(je n'ai qu'une semaine de recul sur le c# et .Net).
Je pensais que la datagrid était plus simple et plus convivial à utiliser
(un peu comme le FlexGrid de l'époque), et ne pas avoir besoin de coder 200
lignes de codes pour simplement pouvoir augmenter la hauteur d'une ligne
dans une grille...


"Pierre TCHEKOUTEU [SELF-INFORMATIQUE]" a écrit dans le
message de news:
c'est vrai,
essaye de modifier la propriété "Height" du textbox situé dans ton
DataGridTextBoxColumn.
le problème est que cette hauteur sera la même pour toutes les lignes.

- il ne reste qu'à dériver la classe "DataGridTextBoxColumn".
- surcharger la méthode OnPaint.
- fixer une largeur standard pour les colonnes.
- Utiliser Graphics.Measuring() pour mésurer la longueur du texte en
fonction de la largeur standard de la colonne,
- en définir un rectangle approprié dans chaque cas (doubler ou tripler la
hauteur du rectangle selon la longueur du texte)
- utiliser Graphics.DrawString(...) dans les rectangles appropriés.

si tu n'a pas trouvé d'ici demain, je t'enverrai un exemple de classe que
j'ai utilisé dans les mêmes circonstances.
Désolé je l'ai sur un autre pc qui n'est pas ici. (trop long pour tout
retaper maintenant)

@+


"Benoit" a écrit dans le message de
news:
Merci pour l'info, mais cela ne change pas la hauteur de ma ligne
J'ai bien l'info sur plusieurs lignes, mais il faut que j'augmente
manuellement la hauteur de la ligne dans le datagrid pour que je vois


toutes
les données associées à la cellule.

J'ai fais plusieurs recherches sur le net, mais je n'ai rien trouvé (pour
une appli winform)








Avatar
Pierre TCHEKOUTEU [SELF-INFORMATIQUE]
Espérons que dans les prochaines version ce serait le cas.
@+


"Benoit" a écrit dans le message de
news:
Merci.

Il me semble avoir vu un tel exemple dans msdn.
Sinon, pour l'instant, je laisse tomber, c'est encore trop complexe pour


moi
(je n'ai qu'une semaine de recul sur le c# et .Net).
Je pensais que la datagrid était plus simple et plus convivial à utiliser
(un peu comme le FlexGrid de l'époque), et ne pas avoir besoin de coder


200
lignes de codes pour simplement pouvoir augmenter la hauteur d'une ligne
dans une grille...


"Pierre TCHEKOUTEU [SELF-INFORMATIQUE]" a écrit dans


le
message de news:
> c'est vrai,
> essaye de modifier la propriété "Height" du textbox situé dans ton
> DataGridTextBoxColumn.
> le problème est que cette hauteur sera la même pour toutes les lignes.
>
> - il ne reste qu'à dériver la classe "DataGridTextBoxColumn".
> - surcharger la méthode OnPaint.
> - fixer une largeur standard pour les colonnes.
> - Utiliser Graphics.Measuring() pour mésurer la longueur du texte en
> fonction de la largeur standard de la colonne,
> - en définir un rectangle approprié dans chaque cas (doubler ou tripler


la
> hauteur du rectangle selon la longueur du texte)
> - utiliser Graphics.DrawString(...) dans les rectangles appropriés.
>
> si tu n'a pas trouvé d'ici demain, je t'enverrai un exemple de classe


que
> j'ai utilisé dans les mêmes circonstances.
> Désolé je l'ai sur un autre pc qui n'est pas ici. (trop long pour tout
> retaper maintenant)
>
> @+
>
>
> "Benoit" a écrit dans le message de
> news:
>> Merci pour l'info, mais cela ne change pas la hauteur de ma ligne
>> J'ai bien l'info sur plusieurs lignes, mais il faut que j'augmente
>> manuellement la hauteur de la ligne dans le datagrid pour que je vois
> toutes
>> les données associées à la cellule.
>>
>> J'ai fais plusieurs recherches sur le net, mais je n'ai rien trouvé


(pour
>> une appli winform)
>>
>>
>
>