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

DataGridView单元格如何退出编辑模式?
Form1有一个DGV,并有赋值语句如下:
C# code

                    this.dgvPOLine[1, currentcellrow].Value = GoodsInfo_DR["Goods_Name"].ToString();
                    this.dgvPOLine[2, currentcellrow].Value = GoodsInfo_DR["Goods_Param"].ToString();
                    this.dgvPOLine.CurrentCell = this.dgvPOLine[4, currentcellrow];



Form2是Form1的从窗口
也有向Form1的DGV赋值的语句:
C# code

                main.dgvPOLine[0, currentcellrow].Value = Query_Goods_DR["Goods_Barcode"].ToString();
                main.dgvPOLine[1, currentcellrow].Value = Query_Goods_DR["Goods_Name"].ToString();
                main.dgvPOLine[2, currentcellrow].Value = Query_Goods_DR["Goods_Param"].ToString();
                main.dgvPOLine.CurrentCell = main.dgvPOLine[4, currentcellrow];
                this.Close();



但是相当奇怪的是,Form1里当焦点定位第4列时,这个单元格是选定状态。
而Form2赋完值返回到Form1后,焦点定位在第4列的单元格是编辑状态的,我在Form2返回Form1之前使用:
C# code
main.dgvPOLine.EndEdit();

这样也没任何效果。

哪位高手指点一下是什么原因,感激不尽!
另:使用编辑的方式如何让一个单元格进入编辑状态和退出编辑状态?

------解决方案--------------------
关于编辑和退出状态,如果你要完美实现就需要重写datagridview控件
简单点的方法是聚焦需要编辑的单元格以后用sendkey类模拟按键"F2"是编辑 "ESC"是退出编辑
------解决方案--------------------
加入下面这句就行了 
private void dataGridView1_CellBeginEdit(object sender, DataGridViewCellCancelEventArgs e)
{
int currentcellcolumn = this.dataGridView1.CurrentCell.ColumnIndex;
if (currentcellcolumn == 1)
{
Form2 frm = new Form2(this);
frm.ShowDialog();
e.Cancel = true;
}
}