Form1有一个DGV,并有赋值语句如下: 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赋值的语句: 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之前使用:
main.dgvPOLine.EndEdit();
这样也没任何效果。哪位高手指点一下是什么原因,感激不尽!
另:使用编辑的方式如何让一个单元格进入编辑状态和退出编辑状态?
this.dgvPOLine[2, currentcellrow].Value = GoodsInfo_DR["Goods_Param"].ToString();
this.dgvPOLine.CurrentCell = this.dgvPOLine[4, currentcellrow];
Form2是Form1的从窗口
也有向Form1的DGV赋值的语句: 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之前使用:
main.dgvPOLine.EndEdit();
这样也没任何效果。哪位高手指点一下是什么原因,感激不尽!
另:使用编辑的方式如何让一个单元格进入编辑状态和退出编辑状态?
from1中:
private void button1_Click(object sender, EventArgs e)
{
this.dataGridView1.CurrentCell = dataGridView1[1, 0];
Form2 fm = new Form2((DataTable)this.dataGridView1.DataSource,this);
fm.ShowDialog();
return;form2中
private void button1_Click(object sender, EventArgs e)
{
main.dataGridView1[0, 0].Value = "123";
main.dataGridView1[0, 1].Value = "123";
main.dataGridView1.CurrentCell = main.dataGridView1[0, 2];
this.Close();
}由form2控制form1中的单元格值后设置当前值最后关闭返回form1没有出现当前单元格编辑的现象
你发一个这种情况的详细demo出来我试下
简单点的方法是聚焦需要编辑的单元格以后用sendkey类模拟按键"F2"是编辑 "ESC"是退出编辑
http://www.mediafire.com/?sharekey=8f6bed8722e9a981d2db6fb9a8902bda
通过按F2或者鼠标单击第2列,则弹出Form2,单击Form2上的按钮,则给Form1上dgv的当前行的第1,2,3例赋值,然后焦点转到同行第4列,再关闭Form2,此时当前行第4列单元格是编辑状态。
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;
}
}
非常感谢!我刚才试了在关闭Form2之前执行
endKeys.Send("{ESCAPE}");
这样也达到了
e.Cancel = true;
同样的效果。再次感谢!只是很奇怪EndEdit()居然无效???