0

当用户在我的 DatagridView 单元格中输入无效值时,我在 _CellValidating 事件中设置“e.Cancel = true”。

似乎 e.Cancel 也阻止用户关闭表单或点击 X 按钮,我该如何添加例外?(即使 e.Cancel 设置为 true,也允许用户关闭表单)

4

1 回答 1

1

我只是根据这个场景搭建了一个测试项目,似乎 ' 事件在DataGridView'事件CellValidating之前被调用;这意味着在验证单元格时,您无法知道用户是否尝试关闭表单。FormClosing

严格来说,正确的事件顺序是让用户在允许关闭表单之前在单元格中输入有效数据(或按退出键取消编辑)。但是,如果您想允许表单关闭,您可以处理Closing表单的事件:

protected override void OnClosing(CancelEventArgs e) {
    e.Cancel = false;
    base.OnClosing(e);
}

这是不好的做法,但它会给你你所要求的行为。

于 2012-06-18T03:20:30.407 回答