2016-04-05 15 views
-2

私は3列のデータグリッドビューを持っています:請求書ID、価格、チェックボックス。DataGridView CellContentチェックボックス変更イベント

チェックボックスをクリックすると、その行の価格は0になります。今起こっている。

ただし、チェックボックスのチェックを外すと、その価格はそのままである必要があります。しかし、それはゼロのままです。以下は、セル内容のクリックのための私のコードです。チェックボックスをオフにした場合、前の価格を取得するにはどうすればよいですか?

private void grvItems_CellContentClick(object sender, DataGridViewCellEventArgs e) 
{ 
    var senderGrid = (DataGridView)sender; 
    DataGridViewRow row = this.grvItems.CurrentRow; 
    if (e.RowIndex >= 0) 
    { 
     if (senderGrid.Columns[e.ColumnIndex] is DataGridViewCheckBoxColumn && 
      e.RowIndex >= 0) 
     { 
      if (e.ColumnIndex == grvItems.Columns["UnderWarranty"].Index) 
      { 
       string returnAmt = lblReturnAmountVal.Text; 
       bool isCheked = (bool)grvItems.Rows[e.RowIndex].Cells["UnderWarranty"].EditedFormattedValue; 

       if (isCheked) 
       { 
        grvItems.Rows[e.RowIndex].Cells["PRICE"].Value = "0.00"; 
        lblReturnAmountVal.Text = "0.00"; 
       } 
       else 
       { 

       } 
       grvItems.EndEdit(); 
      } 
     } 
    } 
} 

答えて

0

CheckedChangedイベントを試しましたか? Winformsとチェックボックスを使用すると役立つはずです。以下の未テストコード:

private void checkBox1_CheckedChanged(object sender, EventArgs e) 
{ 
    if (checkBox1.Checked) 
    { 
     value = 0; 
    } 
    else 
    { 
     // whatever other logic should happen 
    } 
} 
0

あなたは、元のデータ値に戻したい場合は、店どこかそれをする必要があります。

あなたはいつもこのため、セルのTagプロパティを使用することができます。

   DataGridViewCell cell = grvItems.Rows[e.RowIndex].Cells["PRICE"]; 
      if (isCheked) 
      { 
       cell.Tag = cell.Value; 
       cell.Value = "0.00"; 
       lblReturnAmountVal.Text = "0.00"; 
      } 
      else 
      { 
       //   use your cell's datatype here!! VVV 
       if (cell.Tag != null) cell.Value = cell.Tag as decimal; 
      } 
関連する問題