6

早上好,

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

我想要的结果是在用户单击提交按钮时验证表单上的所有控件。我想让 errorProvider 图标出现在错误的字段旁边,并允许用户在他们认为合适的时候更正它们。

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

提前感谢您的任何帮助和建议,

4

5 回答 5

28

表单具有 AutoValidate 属性,可以设置为允许更改焦点

于 2009-01-30T09:53:51.723 回答
7

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

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

于 2009-10-23T17:44:20.753 回答
2

最简单的方法是将所有验证放在提交按钮处理程序中,而不是将其放在控件中。

于 2008-11-19T15:42:25.830 回答
2

我们有一个验证函数,如果表单有效则返回 bool 并设置表单上的所有错误提供程序:

看起来像这样:

    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;
     }
于 2008-11-19T16:55:17.370 回答
-1

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

于 2008-11-19T15:44:20.803 回答