【发布时间】:2011-05-11 04:42:31
【问题描述】:
根据设计要求,datagridview不能由用户直接编辑。它处于只读模式。当用户双击单元格时,datagridview 的只读属性变为 false,并且单元格接受键盘输入。但是,原始键盘输入需要在进入单元格之前进行格式化。所以,我截取 KeyPress 事件如下:
private void dgw_keyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
此时单元格处于编辑模式和脏模式。然后我用不同的方法更新 Value 属性并调用dgw.Refresh(),它应该在单元格上显示更新的值。但它不会。仅当当前单元格不脏且未处于编辑模式时才会更新。如何在单元格仍处于编辑模式时强制显示更新后的值?
有什么想法吗?
【问题讨论】:
-
不太清楚您想要实现什么,您如何捕获
keypress事件,然后修改输入并将其分配给网格。请发布所有相关代码,这并不能说明导致问题的原因。 -
我在 datagridview 控件上尝试了 InvalidateCell() UpdateCellValue() 和 Refresh(),但没有成功。我拦截并忽略了控件的关键事件。相反,我有一个记录击键的键盘挂钩。我获取键盘钩子捕获的键事件,修改值并将它们显示在 DGW 单元格上。
标签: c# .net winforms datagridview