2017-08-21 49 views
1

私はDatagridviewを持っており、ユーザーは商品の価格を入力できます。私の顧客は、2.525を価格に入力すると2.52を表示し、セルをフォーカスしたり編集したりすると2.525というフル・バリューを表示することを望んでいます。Datagridviewで小数点以下2桁を切り捨てずに表示

Datagridview列の書式設定でこのコードを使用していますが、これは入力値を四捨五入しています。C2を使用しているため、セルが編集モードになっても値は表示されません。

CustInvLines.Columns["InvLinePrice"].DefaultCellStyle.Format = C2

それは編集モードでは、ユーザが入力した値全体が表示され、それが唯一の編集後に小数点以下2桁を表示するように、どのようにして、セルの書式を設定しますか?

答えて

2

あなたはDataGridView.CellFormattingイベントハンドラ

private void CustInvLines_CellFormatting(object sender, 
             DataGridViewCellFormattingEventArgs e) 
{ 
    if (e.RowIndex < 0) 
    { 
     return; 
    } 
    var column = CustInvLines.Columns[e.ColumnIndex]; 
    if (column.Name == "InvLinePrice") 
    { 
     var cell = CustInvLines.Rows[e.RowIndex].Cells[e.ColumnIndex]; 
     var value = (decimal)e.Value; 
     if (cell.IsInEditMode) 
     { 
      e.Value = value.ToString(); // Display all digits 
     } 
     else 
     { 
      // Display only two digits of decimals without rounding 
      var twoDigitsValue = Math.Truncate(value * 100)/100; 
      e.Value = twoDigitsValue.ToString("C2"); 
     } 
    } 
} 
+0

ありがとうございました。私は試しましたが、 'var value =(decimal)e.Value;'行に 'Specified cast is valid 'というエラーが表示されています。私はすでに 'var value = Convert.ToDecimal(e.Value); 'に変更しようとしましたが、同じエラーです。 – Zhyke

+0

基礎となる値が 'decimal'型であることは確かですか? – Fabio

+1

列名のチェックに加えて、 'e.RowIndex> -1'をチェックするための条件を追加する必要があります。 –

0

DataGridViewCellEndEditイベントでこれを試してみてくださいに自分で値をフォーマットする必要があります。

private void CustInvLines_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
{ 
     var column = CustInvLines.Columns[e.ColumnIndex]; 
     if (column.Name == "InvLinePrice") 
     { 
      var val = CustInvLines.Rows[e.RowIndex].Cells[e.ColumnIndex].Value; 
      if (val !=null) 
      { 
       var twoDecimal = Math.Truncate(100 * decimal.Parse(val.ToString()))/100; 
       CustInvLines.Rows[e.RowIndex].Cells[e.ColumnIndex].Value = twoDecimal.ToString("C2"); 
      } 
     } 
} 

この質問では、回答はTruncate Two decimal places without roundingに関する情報を提供します。

関連する問題