【发布时间】:2013-12-11 15:43:21
【问题描述】:
我正在使用带有如下代码的 ErrorProvider:
private void textBoxLocation_Validating(object sender, CancelEventArgs e)
{
if (!ValidateLocation())
{
e.Cancel = true;
}
}
这个特定的文本框是为了让用户输入特定的路径,方法是直接将其键入文本框,或者按“浏览”按钮打开文件对话框,然后将路径复制到文本框。
问题是当用户直接在未验证的文本框中键入内容时,e.Cancel = true; 被调用,这使得文本框不会失去焦点,但是我什至无法按下浏览按钮来选择一条路径。不仅如此,我什至无法关闭程序。
如何解决这个问题?
【问题讨论】:
-
避免在验证事件中这样做。将其移至您的 accept 数据方法(以取消关闭)并在键入期间“即时”执行(处理 TextChanged 或...使用 Application.Idle)。
-
那么,不要设置 e.Cancel = true 。并实际使用 ErrorProvider 以便用户知道数据输入无效。
标签: c# winforms validation errorprovider