有时,当用户在 DataGridViewTextBox 中键入文本时,您想要启用或禁用控件,具体取决于键入的值。例如,在您输入正确的值后启用按钮
Microsoft 在一篇关于如何创建可以禁用的 DataGridViewButtonCell 的文章中展示了这种方法。
这是他们的把戏(也可以在其他解决方案中看到)
- 确保您收到事件 DataGridView.CurrentCellDirtyStateChanged
- 收到此事件后,通过调用提交当前单元格中的更改: DataGridView.CommitEdit(DataGridViewDataErrorContexts.Commit);
- 此提交将导致事件 DataGridView.CellValueChanged
- 确保在引发此事件时收到通知
- 在您的 OnCellValueChanged 函数中,检查更改值的有效性并决定是否启用或禁用相应的控件(例如按钮)。
这工作正常,除了 CommitEdit 使文本在 OnCellValueChanged 中被选中。因此,如果您想输入 64,您会在输入 6 时收到通知,然后在输入 4 时收到通知。但是因为选择了 6,所以您没有得到 64,而是将 6 替换为 4。不知何故,代码必须取消选择 6在解释值之前在 OnCellValueChanged 中。
属性 DataGridView.Selected 不起作用,它不会取消选择文本,但会取消选择单元格。
那么:如何取消选择所选单元格中的文本?