dataGridView中Cells实时更新应该响应什么事件

tossgoon 2010-09-23 02:41:37
1、想在一个单元格A中输入数字的时候,另一个单元格B的内容实时改变。原来用CellValueChanged,效果不太好,因为只能是在A中输入完了之后,再点一下别的地方(等A焦点完全消失),B才能改变;
2、有人说用KeyDown事件,我试了,可发现这个KeyDown是对于dataGridView响应的,也就是说当前焦点在dataGridView上面时,我按下键盘就会触发。
3、纠结中。
4、多指教!多谢!
...全文
111 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
tossgoon 2010-09-26
  • 打赏
  • 举报
回复
谢谢人生如梦,我最后用的是:
在CurrentCellDirtyStateChanged事件中,将CommitEdit()写了进去。
还请问下你写的ProcessRightKey函数作用是什么呢?我直接定义了cellValueChanged()事件了。
再次感谢你的思路!
Nick黄 2010-09-23
  • 打赏
  • 举报
回复
顶、人生如梦真强大
wuyq11 2010-09-23
  • 打赏
  • 举报
回复
private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
{
if (e.RowIndex > 0)
{
dataGridView1.CommitEdit(System.Windows.Forms.DataGridViewDataErrorContexts.Commit);
}
}
wuyq11 2010-09-23
  • 打赏
  • 举报
回复
判断Dataset.haschanges
public new bool ProcessRightKey(Keys keyData)
{
Keys key = (keyData & Keys.KeyCode);
if (key == Keys.Enter)
{
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.RowCount == 1))
{
base.CurrentCell = base.Rows[base.RowCount - 1].Cells[0];
return true;
}
if ((base.CurrentCell.ColumnIndex == (base.ColumnCount - 1)) && (base.CurrentCell.RowIndex < (base.RowCount - 1)))
{
base.CurrentCell = base.Rows[base.CurrentCell.RowIndex + 1].Cells[0];
return true;
}

return base.ProcessRightKey(keyData);
}
return base.ProcessRightKey(keyData);
}

111,129

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Creator Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧