Question

J'ai été à la recherche sur le web mais je ne l'ai pas été en mesure de trouver une réponse.

J'ai un DataGridView avec un BindingSource borné, qui a une liste d'objets d'une classe personnalisée. Parmi les champs de la classe, j'ai un champ de chaîne que je veux montrer à l'aide

Path.GetFileName();

car il contient toute filepath et ce que je veux est de montrer que le nom du fichier, mais en gardant le filepath (à savoir, les données bornées intacte) dans l'objet borné.

Il est là une façon de le faire (format, modèle, styles, ...)? parce que chaque fois que je change le champ Valeur de la cellule, il modifie la valeur de l'objet (ce qui est de la logique).

Un grand merci à l'avance

Était-ce utile?

La solution

Utilisez le DataGridView.CellFormatting événement sur le DataGridView. Cela vous donnera un objet DataGridViewCellFormattingEventArgs avec des informations sur la cellule en cours, y compris la rangée et de la colonne et la valeur non formaté. Vous mettez à jour la propriété Valeur à la valeur formatée et jeu FormattingApplied true, et le DataGridView rendrez cette valeur.

Quelque chose comme ceci:

private void dataGridView1_CellFormatting(object sender, 
    DataGridViewCellFormattingEventArgs e)
{
    if (e.ColumnIndex == 0) // Check for the column you want
    {
        e.Value = Path.GetFileName(e.Value.ToString());
        e.FormattingApplied = true;
    }
}

Autres conseils

Le Binding classe a une Format() et Parse() gestionnaire d'événements où vous pouvez définir la façon dont les données sera mis en forme dans les deux sens.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top