Pregunta

He estado buscando a través de la web, pero no he sido capaz de encontrar una respuesta.

Tengo un DataGridView con una BindingSource delimitada, que tiene una lista de objetos de una clase personalizada. Entre los campos de la clase, tengo un campo de cadena que quiero mostrar utilizando

Path.GetFileName();

, ya que contiene toda la ruta de archivo y lo que quiero es mostrar sólo el nombre del archivo, pero manteniendo la ruta de acceso (es decir, los datos delimitadas intacta) en el objeto acotado.

¿hay alguna manera de hacer esto (Formato, plantilla, estilos, ...)? porque en cualquier momento puedo cambiar el campo de valor de la celda, cambia el valor del objeto (que es de lógica).

Muchas gracias de antemano

¿Fue útil?

Solución

Utilice el DataGridView.CellFormatting evento en el DataGridView. Esto le dará un objeto DataGridViewCellFormattingEventArgs con información sobre la celda actual, incluyendo la fila y columna y el valor sin formato. Actualizar la propiedad Value para el valor con formato y el conjunto FormattingApplied en true y el DataGridView va a hacer que ese valor.

Algo como esto:

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;
    }
}

Otros consejos

El Binding clase tiene una Format() y Parse() controlador de eventos donde se puede definir la forma en que los datos será formateado en ambos sentidos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top