0 votes

DataGridView comment afficher les lignes de grille dans toute la zone cliente?

Y a-t-il un moyen d'activer les lignes de la grille dans toute la zone cliente du datagridview plutôt que de les rendre visibles au fur et à mesure que vous ajoutez des lignes ?

J'ai lu le msdn mais je ne trouve rien d'utile.

C#, winforms, visual studio 2008

Merci, R.

3voto

Andy Points 2608

Vous pourriez éventuellement sous-classer le DataGridView, substituer son événement PaintBackground et ajouter une image de quelques lignes. Voir ici et ici pour quelques exemples.

Je réalise que c'est un peu une "astuce". :)

1voto

ULysses Points 764

Je choisirais entre la proposition d'Andy et le mode virtuel.

Dans le mode virtuel de la vue en grille, vous devrez fournir une interface au magasin de données en traitant un certain nombre d'événements du contrôle. Dans ce cas, vous pouvez définir directement une propriété RowCount, puis décider dans l'événement CellValueNeeded si la cellule contient des données ou non. Vous devrez cependant déterminer le nombre de lignes qui rempliront votre contrôle. http://msdn.microsoft.com/en-us/library/ms171622.aspx

0voto

Gary Points 4188

Vous pourriez ajouter une pile de lignes fictives dans la grille et les rendre en lecture seule.

0voto

Arseny Points 4270

J'ai rencontré ce problème lorsque j'avais un nombre de lignes dans ma grille de données qui était pris à partir du fichier de configuration. En cas de petit nombre de lignes, la grille de données a un aspect peu esthétique avec une couleur de fond grise. Après discussion, nous avons décidé de rendre la hauteur de la grille de données dynamique. Cela a pour effet de modifier également la hauteur de la fenêtre parent où se trouve la grille de données. Maintenant, cela a l'air plutôt bien. Ce n'est pas la bonne réponse à votre question mais plutôt un problème de style à considérer.

0voto

virious Points 355
int MAX_ROWS = 10;
int MAX_CELLS = 10;
dataGridView1.ColumnCount = MAX_CELLS;
int currentRowIndex = dataGridView1.Rows.Add(MAX_ROWS);
foreach (DataGridViewRow row in dataGridView1.Rows)
{
    foreach (DataGridViewCell cell in row.Cells)
    {
        cell.ValueType = typeof(String);
        cell.Value = "This is the: " + cell.OwningColumn.Index.ToString() + 
            " " + cell.OwningRow.Index.ToString() + " cell";
    }
}

Je sais que ce n'est pas la meilleure solution mais cela ne nécessite pas la création d'un nouveau contrôle personnalisé similaire à DataGridView avec configuration de son image d'arrière-plan.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X