2008-11-19 77 views
5

早上好,文本框验证,焦点切换问题

我正在使用控件验证的C#winform应用程序。我遇到的问题是,当用户点击文本框并尝试点击时,验证触发并重新聚焦控件,基本上用户不能将控件单击出另一个控件。

我希望的结果是当用户单击提交按钮时,表单上的所有控件都会被验证。我希望errorProvider图标显示在出错的字段旁边,并允许用户在他们认为合适的时候更正它们。

我的问题是,如何设置控件以允许用户在出现错误时单击它以外的位置。我希望用户有能力填写表格的其余部分,并自行回到错误状态,而不是立即处理。

预先感谢您的帮助和建议,

回答

2

最简单的方法是只把所有的验证在提交按钮的处理程序,而不是在控制它呢。

-1

有一个属性(我认为它在表单上)允许您在验证失败时在字段之间移动。我不记得它叫什么名字,但我认为它的名字非常具有描述性。

+0

There's CausesValidation属性,我相信你在目标控件上设置 - 但你需要将它设置为false为* everything *。为了避免整个机制,IMO更简单。 – 2008-11-19 15:46:48

+0

也许就是这样 - 公平地说,我们通常会对按钮点击进行自己的验证... – 2008-11-19 15:51:59

2

我们有一个返回布尔如果表单是有效的,并设置窗体上的所有错误提供验证功能:

看起来是这样的:

private void OnSave() 
    { 
     if(ValidateData()) 
     { 
     //do save 
     } 
    } 

    public bool ValidateData() 
    { 
     errorProvider.Clear(); 
     bool valid = true; 
     if (this.defectStatusComboBox.SelectedIndex == -1) 
     { 
      errorProvider.SetError(defectStatusComboBox, "This is a required feild."); 
      valid = false; 
     } 
     //etc... 
     return valid; 
    } 
23

形式有AutoValidate性质,可以设置为允许更改焦点

5

表单属性为“AutoValidate”,它会影响表单上的所有控件。这是一个枚举;将其设置为System.Windows.Forms.AutoValidate.EnableAllowFocusChange以允许用户退出验证失败的控件,但仍显示允许用户提示错误工具提示的错误图标。

控制“CausesValidation”属性是一个布尔值。如果这是真的,那么控件引发触发errorProvider的验证事件。它是错误的,一切都被绕过,用户可以退出控制,但没有错误图标或工具提示。