2010-12-07 5 views
4

J'ai un formulaire simple avec un élément DataGridView dessus. Dans le constructeur, les colonnes de la grille sont ajoutées et le DataTable est défini. Lorsque j'appelle ensuite AutoResizeColumns(), il ne redimensionne pas les colonnes comme il le ferait lorsqu'il est appelé par exemple. un événement de bouton. Le code ressemble à ceci (simplifié):Redimensionnement forcé des colonnes DataGridView

public MyDialog() 
{ 
    InitializeComponent(); 
    dgv.Columns.AddRange(SomeClass.MyColumns); 
    dgv.DataSource = SomeClass.Table; 
    // This doesn't work: 
    dgv.AutoResizeColumns(DataGridViewAutoSizeColumnsMode.AllCells); 
} 

AutoResizeColumns() fonctionne en général, mais pas à ce moment-là. BTW, j'ai besoin de cela pour mettre en œuvre un comportement comme il est demandé/décrit here. Des idées?

Répondre

7

De plus, je crois que l'objet doit être VISIBLE avant que le redimensionnement soit fait ... pour une raison quelconque, la peinture ne semble pas se passer comme on pourrait s'y attendre.

+0

Pas tout à fait ce que j'attendais mais il a résolu le problème. Merci. – AndOne

+0

Oui c'est le cas, je viens de confirmer que moi-même avec un projet sur lequel je travaille – Taegost

0

Vous devez utiliser AutoResizeColumns() lorsque votre DataGridView contient des données. C'est la raison. Assurez-vous que SomeClass.Table obtiennent les données avant d'appeler AutoResizeColumns()

+0

Le DataTable est déjà rempli lorsqu'il est réglé. – AndOne

11

J'ai eu la même question jusqu'à ce que je mets le mode autosize:

dgv.AutoSizeColumnsMode = DataGridViewAutoSizeColumnsMode.AllCells; 
+1

Pouvez-vous s'il vous plaît ajouter 'dgv.' et un point-virgule? – Superbest

Questions connexes