ciao a tutti, rieccomi con un problemino da risolvere:
ho una classica datagridview con articoli con campi quantità, prezzo ecc. Il problema è la formattazione: ho messo un N3 per la quantità e un C2 per il prezzo e fin qui tutto ok. Solo che quando scrivo nella cella dovrei usare solo il tastierino numerico e quindo il punto(.) al posto della virgola(,). Così facendo in questo momento se scrivo 3.521 mi ritorna 3521 e non 3,521.
Nelle textbox normali semplicemente intercetto il keydown, non permetto l'inserimento di lettere e trasformo i punti in virgole. E' possibile fare la stessa cosa in griglia? ho controllato nell'evento cell_formatting, ma quando esamino il value mi ritorna già 3521 e quindi dopo la formattazione. Grazie dell'aiuto
[EDIT] ho notato un'altra cosa: provando a sostituire il punto con la virgola nell'evento endedit, in debug si vede chiaramente come la stringa restituita sia esatta, ma la cella non cambi con il nuovo valore assegnato:
string sValue = grdArticoli.CurrentCell.EditedFormattedValue.ToString().Replace(".", ",");
grdArticoli.Rows[e.RowIndex].Cells[5].Value = double.Parse(sValue).ToString("N3");
la gridview è popolata con datagridview.datasource = mydataset; e i campi numerici interessati sono tutti double a db.
[EDIT] Risolto: se servisse a qualcun altro occorre gestire da codice l'evento keypress passando per l'evento editing_control_showing della datagridview: