2010-09-29 3 views
4

J'ai un formulaire Windows. Dans cette forme j'ai le contrôle de grille de données qui a peu de colonnes avec la largeur prédéfinie.Redimensionnement des colonnes DataGridView en fonction de la largeur de la grille

Lorsque je redimensionne le formulaire en utilisant la zone Agrandir ou en utilisant la souris, DataGrid se redimensionne automatiquement pour s'adapter au formulaire. Ceci est fait en utilisant la propriété anchor de la grille de données.

Maintenant, j'ai besoin de redimensionner la largeur des colonnes de sorte que toutes les colonnes s'inscrivent dans la grille redimensionnée sans avoir de barre de défilement horizontale. Actuellement, je le fais en calculant le rapport de la nouvelle largeur de la grille avec l'ancienne largeur de la grille et en augmentant la largeur de la colonne dans le même rapport. Mais le problème est que le rapport n'est pas précis quand je maximise et minimise la forme, donc après quelques actions de redimensionnement, la largeur totale des colonnes est inférieure à la largeur de la grille et commence à montrer de l'espace vide dans la grille. Je fais ceci dans l'événement de redimensionnement de grille.

Une autre capture dans ceci est, il ya deux colonnes fixes également présentes dans cette grille et je ne suis pas censé changer la largeur de ces colonnes sur le redimensionnement de la grille.

Comment devrions-nous gérer cela? Existe-t-il un autre moyen de gérer ce problème de redimensionnement?

Mise à jour: Je faisais un travail inutile de calcul du ratio pour augmenter la largeur des colonnes, ce qui n'est pas nécessaire.

Merci @KMan. Votre suggestion d'utiliser la propriété fill a bien fonctionné. Il prend en charge le redimensionnement de la largeur de la colonne en fonction de la largeur modifiée de la grille lors du redimensionnement du formulaire.

Répondre

6

Que diriez-vous:

  • Vous définissez la propriété AutoSizeColumnsMode-AllCellsExceptHeader, ce ajusterait toutes les colonnes en fonction des valeurs.

  • Et, dans votre dernière colonne, vous pouvez définir le style sur Fill.

En outre, consultez How to: Set the Sizing Modes of the Windows Forms DataGridView Control.

+0

Merci pour la réponse. Je ne suis pas censé augmenter la largeur si la valeur de la cellule ne rentre pas dedans. Je devrais redimensionner la colonne seulement sur le redimensionnement qui arrive à la grille. Je pense que les deux propriétés mentionnées dans votre premier point se rapporte à la largeur interne de la colonne par rapport à la valeur de la cellule. – JPReddy

+0

Votre deuxième point a fonctionné lorsque j'ai modifié d'autres propriétés de la grille. Merci. – JPReddy

+0

FYI, la propriété "style" sur la colonne, c'est-à-dire celle que la réponse dit de remplir, est appelée AutoSizeMode. – ulatekh

Questions connexes