现有这样一个问题:
修改了datagridview的单元格之后,如果数据不合法,希望焦点仍然在当前单元格中。
代码如下:
 private void dataGridView1_CellEndEdit(object sender, DataGridViewCellEventArgs e)
        {
            if (Convert.ToInt32(dataGridView1.CurrentCell.Value) <0)
            {
                MessageBox.Show("值不能小于0");
                dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex];  //希望是当前单元格选中,但是不起作用
                dataGridView1[e.ColumnIndex, e.RowIndex].Selected = true;   //希望是当前单元格选中,但是不起作用
            }
        }请问如何才能让光标仍然在当前单元格呢。
还有
dataGridView1[e.ColumnIndex, e.RowIndex].Selected = true; 这句,在修改了内容后,没有按回车而是直接选中其他单元格时会发生异常,请问如何解决

解决方案 »

  1.   

    使用验证事件dataGridView1_CellValidating
    数据不合法,设计事件参数e.Cancel=true;焦点就会停留下来
      

  2.   

    e.Cancel=true;
    然后:dataGridView1.CurrentCell = dataGridView1[e.ColumnIndex, e.RowIndex]; 
          dataGridView1[e.ColumnIndex, e.RowIndex].Selected = true; 
      

  3.   

    dataGridView1[e.ColumnIndex, e.RowIndex].Foucs = true;
    dataGridView1[,].Selected = dataGridView1[e.ColumnIndex, e.RowIndex];