2016-10-03 71 views

回答

0

在窗体加载我创建了一些行和列,

private void Form1_Load(object sender, EventArgs e) 
     { 
      DataTable dt = new DataTable(); 
      dt.Columns.Add("test1"); 
      dt.Columns.Add("test2"); 
      dt.Columns.Add("test3"); 
      string[] row = new string[] { "1", "Product 1", "1000" }; 
      dt.Rows.Add(row); 
      row = new string[] { "2", "Product 2", "2000" }; 
      dt.Rows.Add(row); 
      row = new string[] { "3", "Product 3", "3000" }; 
      dt.Rows.Add(row); 
      row = new string[] { "4", "Product 4", "4000" }; 
      dt.Rows.Add(row); 
      dataGridView1.DataSource = dt; 
     } 

现在,CellBeginEditCellEndEdit会做的伎俩。

string tempValue = ""; 
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e) 
    { 
     tempValue = dataGridView1.CurrentCell.Value.ToString(); // every edit start took the value and put it to tempValue. 
    } 

    private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e) 
    { 
     if (tempValue != dataGridView1.CurrentCell.Value.ToString()) // we need to compare tempValue and currentValue. If we don't, even we don't do any changes it will show dialog result. 
     { // take the current value (changed value) 
      string currentValue = dataGridView1.CurrentCell.Value.ToString(); 
      DialogResult dialogResult = MessageBox.Show("old value:" + tempValue + " new value:" + currentValue, "Confirm Change", MessageBoxButtons.YesNo); //show dialog result 
      if (dialogResult == DialogResult.Yes) // if yes do something 
      { 
       // yes 
      } 
      else if (dialogResult == DialogResult.No) // if no cancel changed value set old value which is tempValue. 
      { 
       dataGridView1.CurrentCell.Value = tempValue; 

      } 
     } 

    } 

希望帮助,

+0

在CellValueChanged事件之前或之后触发CellBeginEdit和CellEndEdit事件吗?现在,我正在捕获CellValueChanged事件中的值并更新数据库。 –

+0

如果您有3个事件,First CellBeginEdit会触发CellEndEdit,CellValueChanged和CellEndEdit。 @dn_learner – Berkay

0

将在CellBeginEdit和CellEndEdit事件火灾CellValueChanged事件之前还是之后?现在,我正在捕获CellValueChanged事件中的值并更新数据库。

+0

我会回答你的问题,并在我的回答中留言。通过添加新答案来提出新问题是不正确的方法。 – Berkay

+0

对不起。 –

相关问题