Visualizzazione dei risultati da 1 a 2 su 2
  1. #1
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162

    [C#] FormattedValue

    Ciao a tutti,
    non mi è chiaro il meccanismo della formattazione del valore delle celle di un
    DataGridView. In pratica mi aspetto che dopo aver immesso un valore, all'uscita
    della cella questo risulti formattato secondo le impostazioni di formato che ho
    assegnato alla colonna in fase di disegno del grid.
    Non ottengo quanto desiderato. Devo intervenire gestendo il LeaveCell ? Se si, come ?
    Qualcuno sa darmi una dritta ?
    Grazie mille in anticipo.
    Ciao, Brainjar

  2. #2
    Utente di HTML.it L'avatar di Brainjar
    Registrato dal
    Nov 2004
    Messaggi
    1,162
    Per chi dovesse gestire la stessa situazione, ho optato per un la gestione della
    formattazione nell'evento LeaveCell.
    codice:
    // Nella InitializeComponent del Form : 
    // per il DataGridView grdWPreventivo
    
    this.grdWPreventivo.CellEndEdit += new System.Windows.Forms.DataGridViewCellEventHandler(this.GrdWPreventivoCellLeave);
    
    // La procedura GrdWPreventivoCellLeave
    void GrdWPreventivoCellLeave(object sender, System.Windows.Forms.DataGridViewCellEventArgs e)
    {
    	string valore;
    	try {
    		if (e.ColumnIndex > 0) {
    			valore = this.grdWPreventivo[e.ColumnIndex, e.RowIndex].Value.ToString();
    			this.grdWPreventivo[e.ColumnIndex, e.RowIndex].Value = FormatRetValue(valore,2); 
    		}
    
    	} catch {
    		return;
    	}
    }
    
    // La funzione FormatRetValue
    public static string FormatRetValue(String valore, int n) {
    	// -------------------------------------------------------
    	// Valore formattato alle n cifre decimali
    	// -------------------------------------------------------
    	string parsedValue = valore.Replace(".",","); 
    	// -------------------------------------------------------
    	double dValore;
    	double.TryParse(parsedValue, out dValore);
    	parsedValue = Math.Round(dValore,n).ToString().Replace(",","."); 
    	return parsedValue;
    	// -------------------------------------------------------
    }
    Naturalmente ho postato solo la parte essenziale del codice. La funzione, infatti, è
    inserita in una classe di utility.
    Tengo a precisare che non è la sola soluzione possibile. Nel mio caso specifico, però,
    mi va benissimo perchè devo far eseguire altri controlli all'abbandono dell'editing della
    cella e quindi la struttura è necessariamente questa.
    Ciao, Brainjar

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.