Escribo esta consulta porque ni siquiera se si el título describe mi duda....
Tengo un formulario con un DataGridView con tres columnas de tipo DataGridViewTextBoxColumn: "cantidad" "precio_unitario" e "importe"
a las dos ultimas las he configurado con formato de moneda de tal manera que presentan los numeros precedidos del simbolo $.....
la idea es que: importe = cantidad * precio_unitario
Mientras asigne valores de tipo float programaticamente a las celdas de dichas columnas, se realiza correctamente la operación deseada.
El problema es cuando desde el formulario cambio el valor de la celda en la columna "precio_unitario" dicho valor pareciera ser un string (en realidad un object), por lo que ya no realiza la operación deseada de forma correcta.
Lo he resuelto momentáneamente usando el evento CellValueChanged y con el siguiente código:
Código:
if (datagridview1.Columns[e.ColumnIndex].Name == "precio_u")
{
int cant = Convert.ToInt32(datagridview1.Rows[e.RowIndex].Cells["cantidad"].Value);
datagridview1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = float.Parse(datagridview1.Rows[e.RowIndex].Cells[e.ColumnIndex].Value.ToString());
datagridview1.Rows[e.RowIndex].Cells[4].Value = cant * float.Parse(datagridview1.Rows[e.RowIndex].Cells["precio_u"].Value.ToString());
}
Como pueden ver primero obtengo el valor contenido en la celda, para converirlo a string, y luego poderlo convertir a float, y de nuevo asignarlo a la misma celda, eso sin contar con el hecho de esas horribles y enormes sentencias jeej

Esto funciona, si embargo creo que dista mucho de ser la forma más adecuada y eficiente.
¿Alguien conoce una mejor forma de hacer esto?
Les agradeceré mucho sus respuestas
Salu2