Thr*_*ian 5 .net c# datagridview winforms
根据设计要求,用户无法直接编辑datagridview.它处于只读模式.当用户双击单元格时,datagridview的只读属性变为false,单元格接受键盘输入.但是,原始键盘输入需要在进入单元格之前进行格式化.所以,我拦截KeyPress事件如下:
private void dgw_keyPress(object sender, KeyPressEventArgs e)
{
e.Handled = true;
}
Run Code Online (Sandbox Code Playgroud)
此时,单元格处于编辑模式和脏模式.然后我用不同的方法更新Value属性并调用dgw.Refresh()哪个应该在单元格上显示更新的值.但事实并非如此.它只会在当前单元格不脏并且不处于编辑模式时更新.如何在单元格仍处于编辑模式时强制显示更新后的值?
有任何想法吗?
小智 11
使用下面的内容刷新当前单元格的值,更改为适合您的EditingControl类型
if (dgvMain.EditingControl is TextBox)
{
dgvMain.EditingControl.Text = dgvMain.CurrentCell.Value.ToString();
}
Run Code Online (Sandbox Code Playgroud)
另一种方法:
调用此方法可强制单元格在编辑模式下更新其显示值.当外部进程修改单元格值并且您希望通知用户更改时,这非常有用,即使用户指定的更改因此而丢失也是如此.细节
dgvMain.RefreshEdit();
Run Code Online (Sandbox Code Playgroud)
您可以通过实现IDataGridViewEditingControl接口来做到这一点。我认为这是最大程度地控制单元格如何进入和离开编辑模式的方法。您可以在 Mark Rideout 的DataGridView 常见问题解答 (DOC)的第 5.11 节中找到更多详细信息