我在窗口中创建了一个DataGridView和2个button,一个为编辑,一个为保存
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == EditingRowIndex)
            {
                dataGridView1.BeginEdit(true);
            }
        }
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
        {
            if (e.RowIndex == EditingRowIndex)
            {
                if (MessageBox.Show("保存修改?", "提示:", MessageBoxButtons.YesNo) == DialogResult.No)
                {
                    bindingSource1.CancelEdit();
                    EditingRowIndex = -1;
                    return;
                }
                EditingRowIndex = -1;
                dataGridView1.EndEdit();
                bindingSource1.EndEdit();
                SaveData(); 
            }
        }
private void btnSave_Click(object sender, EventArgs e)
        {
            SaveData();
        }
private void btnEdit_Click(object sender, EventArgs e)
        {
            if (dataGridView1.SelectedRows.Count > 0)
            {
                EditingRowIndex = dataGridView1.SelectedRows[0].Index;
                dataGridView1.ClearSelection();
                dataGridView1.CurrentCell = dataGridView1[0, EditingRowIndex];
                dataGridView1.BeginEdit(true);
            }
        }
当我编辑完了点击保存按钮时,窗口就无法关闭,且btnEdit的点击事件也不执行。如果我把RowLeave里的EditingRowIndex = -1;放到dataGridView1.EndEdit();后面的话点击保存后窗口是能关闭的,但datagridview又有一个单元格处于编辑状态。
还望高手们帮我看下。

解决方案 »

  1.   

    EditingRowIndex是什么?如何处理的?
      

  2.   

    SaveData里如何处理的?
    这里哪里关闭窗口?
      

  3.   

    这样处理麻烦。简单点。只有选了某一行点了编辑按钮这个才让他编辑这一行。离开这一行。要选择下一行。不要进入Cell。这样就省了很多麻烦了。
      

  4.   

    SaveData里面只有一句代码
    adapter.Update((DataTable)bindingSource1.DataSource);adapter 是OleDbDataAdapter的一个实例
    关闭窗口就是点窗口上的XX
      

  5.   

    这个只是leave和enter时用来指示是否是正在编辑的行,是一个全局int变量
      

  6.   

    我用的EditMode是EditProgrammatically,我希望只有被选中的行可以被编辑,其他行则不能。
    根据你的思路我试了一下,没找到能不用Cell Enter而使整行处于编辑状态的,还望再多提醒一点.....after all
    谢谢你这么多的回帖,谢谢。