0

column1 の値を column2 に追加しようとしていて、column2 に挿入する必要があります

私のコードは

イベントはCellLeaveです

if (dgrVwEmp.Columns[dgrVwEmp.CurrentCell.ColumnIndex].Name == "ol")
 {
    int ol;
    int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                         .Cells["ol"].EditedFormattedValue.ToString(), out  ol);

    int leavs;
    int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                         .Cells["ttlLeaves"].Value.ToString(), out leavs);

    int dys;
    int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                         .Cells["ttlWrkng"].Value.ToString(), out dys);

    dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                         .Cells["ttlLeaves"].Value = (ol + leavs).ToString();
    dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                         .Cells["ttlWrkng"].Value = (dys - ol).ToString();

 }

このように追加しようとすると、最初は値が追加されて3番目のフィールドに挿入されます.同じセルに戻った場合、すでに追加されたフィールドに再度追加されます. どうすれば適切に追加できますか。これは私がセルリーブを使用しているためです。これを適切に行うための他の方法または他のイベントはありますか

4

1 に答える 1

1

ttleavesおそらく、古い値を保持する変数を導入し、イベントが発生すると、新しい値が追加されると同時に古い値がセルから減算されます。ttlWrkngセルでは逆のことが起こるはずです。

private int oldValue = 0;

private void dgrVwEmp_CellLeave(object sender, DataGridViewCellEventArgs e)
{
   if (dgrVwEmp.Columns[dgrVwEmp.CurrentCell.ColumnIndex].Name == "ol")
   {
      int ol;
      int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                     .Cells["ol"].EditedFormattedValue.ToString(), out  ol);

      int leavs;
      int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                     .Cells["ttlLeaves"].Value.ToString(), out leavs);

      int dys;
      int.TryParse(dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                     .Cells["ttlWrkng"].Value.ToString(), out dys);

      dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                     .Cells["ttlLeaves"].Value = (ol + leavs - oldValue).ToString();
      dgrVwEmp.Rows[dgrVwEmp.CurrentCell.RowIndex]
                     .Cells["ttlWrkng"].Value = (dys - ol + oldValue).ToString();

      oldValue = ol;
   }

}
于 2013-03-08T19:24:35.617 に答える