所以,我在WinForms中遇到了这个问题,至少我认为这是一个问题,我不知道如何解决它。
基本上,当我为控件实现Validating
事件处理程序CancelEventArgs.Cancel
时,当控件验证失败时,我将其设置为 true。示例代码:
private void NameTextBox_Validating(object sender, CancelEventArgs e) {
// Assume Cool Validation Logic.
//
// ...
var isValid = false;
if (!isValid) {
e.Cancel = true;
// Set an Error Provider Message.
//
// ...
}
}
这会导致整个 UI 挂起。我无法选择任何其他控件、最小化父窗体窗口或事件退出父窗体窗口。所以我发现了一个类似的问题,其答案建议FormClosing
为父表单实现一个事件处理程序并在FormClosingEventArgs.Cancel
那里设置为 false。
问题是,只要我的控件无效,就永远不会调用该事件处理程序。我有一种感觉,这可能与我的控制层次结构有关,尽管我不是 100% 确定。如果这有帮助,那就是:
-- Parent Form
---- Custom User Control
------ Text Box Control (<-- Causes Hang)
任何想法将不胜感激。