日期:2014-05-18  浏览次数:21184 次

c# datagridview 编辑模式出错
我用Access新建了一个表,主键是自动增量,还有一列是编辑项(暂定为单位列吧)
然后在C#中新建一个窗口,窗口上新建一个datagridview。用oledb把数据自动显示在datagridview中。
dataGridView的默认编辑模式是双击或者F2编辑cell单元格。
我想让用户单击cell即可编辑,于是编程 dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
同时在dataGridView的 CellEnter 编程让单元格收到输入焦点 进入编辑模式
在CellLeave事件中编程让单元格失去输入焦点 退出编辑模式。
问题出来了。
如果用dataGridView的默认编辑模式(双击或者F2编辑cell单元格计入编辑模式),程序的运行没有问题,
如果改为上面我写的代码,程序出现错误,错误为:索引大小超出范围。
具体代码如下:

private void DepartManageForm_Load(object sender, EventArgs e)
  {
  OleDbConnection oleConn = new OleDbConnection(connectionString)
  DataTable dt = null;
  OleDbDataAdapter oda = null;
  string strSql = "select * from depart";
  oda = new OleDbDataAdapter(strSql, oleConn);
  dt = new DataTable("depart1");
  oda.Fill(dt);

  dataGridView1.DataSource = dt; -------------------------程序运行到这一句时出错
  //dataGridView1.Columns["incnum"].HeaderText = "序号";
  dataGridView1.Columns["depart"].HeaderText = "单位名称";
  dataGridView1.EditMode = DataGridViewEditMode.EditProgrammatically;
  }
private void dataGridView1_CellEnter(object sender, DataGridViewCellEventArgs e)
  {
  dataGridView1.BeginEdit(true);
   
  }

private void dataGridView1_CellLeave(object sender, DataGridViewCellEventArgs e)
  {
  dataGridView1.CommitEdit(DataGridViewDataErrorContexts.Commit);
  }

求高手帮忙解决一下

------解决方案--------------------
单击cell即可编辑
dataGridView1.EditMode = DataGridViewEditMode.EditOnEnter;