2010-08-22 3 views
1

J'affiche les prix sur un DataGridView (sur une application WinForms développée en C# sur VS 2008). Le type de colonne est DataGridViewComboBoxColumn.Mettre en forme les éléments de la liste à partir du DataGridViewComboBox

La propriété DefaultCellStyle.Format de cette colonne est définie sur "C2" et les prix sont effectivement mis en forme comme devise dans les cellules de cette colonne. Toutefois, lorsque l'utilisateur clique sur la zone de liste déroulante pour sélectionner une valeur, les valeurs de la liste ne sont pas formatées. Par exemple, au lieu de voir:

3.90 € 
4.50 € 
5.95 € 

Ils voient

3.9 
4.5 
5.95 

Les valeurs sont également alignés à gauche alors que je préférerais avoir les aligné à droite.

Voici une image montrant le comportement actuel et nous pouvons voir clairement qu'il ne semble pas aussi bien que possible.

alt text

Est-il possible d'obtenir le résultat que je suis après?

Merci.

Répondre

1

poignée Juste l'événement EditingControlShowing sur votre DataGridView et faire:

void dataGridView1_EditingControlShowing(object sender, DataGridViewEditingControlShowingEventArgs e) 
{ 
    ComboBox cb = e.Control as ComboBox; 
    if (cb != null) 
     cb.FormatString = "<your format string>"; // e.g. "C2" 
} 
+0

Grand, il fonctionne grâce. Comment faire si j'ai plusieurs colonnes ComboBox que je veux formater différemment? Dans la plupart des cas, j'ai une propriété e.ColumnIndex qui me permet de voir pour quelle colonne l'événement a été déclenché, mais cela ne semble pas être le cas pour l'événement EditingControlShowing. Merci! –

+0

Eh bien, je viens de faire ceci: "if (gridView.CurrentCell.ColumnIndex == gridView.Columns [" Prix "]. Index)" et il fait l'affaire, mais s'il y a une meilleure approche, s'il vous plaît ne pas hésiter à faites le moi savoir. Merci. –

+1

Oui, je pense que c'est la bonne méthode;) – digEmAll

Questions connexes