2010-03-18 5 views
1

J'ai une DGV avec les colonnes "code" et "nom".Formatage DataGridView

Dépend de la longueur d'un code Je veux ajouter une tabulation aux cellules "name", pour montrer la structure d'une donnée.

comme ça dans cette image:

https://lh3.ggpht.com/_DoguEKXT64k/S6Hoq7Eu7sI/AAAAAAAABRs/wwjf7TXTLmk/dgv.jpg

Comment est-il préférable de le faire? Je pense qu'il y a un meilleur moyen que de simplement boucler toutes les lignes et ajouter des espaces devant les noms, non?

Répondre

3

Vous pouvez vous connecter à DataGridView.CellFormatting-Event. Cela sera appelé pour chaque cellule si nécessaire.

Edit: Ceci est une variante du code Vadim a écrit dans les commentaires:

Public Overrides Sub DGVCellFormatting(ByVal e As DataGridViewCellFormattingEventArgs) 
    If DGVMain.Columns(e.ColumnIndex).Name = "Name" Then 
     Dim cellValue As String = DGVMain.Rows(e.RowIndex).Cells("Code").Value.ToString() 
     e.Value = cellValue.PadLeft(3 * (cellValue.Length - 3)) 
    End If 
End Sub 
+0

Voulez-vous dire l'ajout d'espaces dans CellFormatting, non? – Vadim

+0

@Vadim: Oui, c'était mon idée. – Bobby

+0

Merci. Ce code fonctionne. Public Overrides Sub DGVCellFormatting (ByVal e comme System.Windows.Forms.DataGridViewCellFormattingEventArgs) Si DGVMain.Columns (e.ColumnIndex) .Name = "Nom", puis e.Value = espace (3 * (DGVMain.Rows (e.RowIndex) .Cells ("Code"). Value.ToString.Length - 3)) + e.Value.ToString – Vadim