什么导致我的文本框验证?

时间:2009-07-02 19:43:20

标签: winforms validation custom-controls

我昨天用自己的验证器制作了一个自定义文本框:

public partial class CustomTextBox : TextBox
{
    ErrorProvider errorProvider;

    public CustomTextBox()
    {            
        InitializeComponent();
        errorProvider = new ErrorProvider();
        errorProvider.DataSource = this;
    }        


    protected override void OnValidating(CancelEventArgs e)
    {
        base.OnValidating(e);
        if (this.Text.Trim() == "")
        {
            errorProvider.SetError(this, "Required field");
            e.Cancel = true;
            return;
        }
        errorProvider.SetError(this, "");
    }


}

所以我把它放在带有取消按钮的表单上,并在取消按钮上将causeValidation设置为false。我还将表单上的causeValidation设置为false。出于某种原因,如果我单击取消,我的customtextbox仍然会触发onValidating事件。是什么原因引起了这个?在我点击提交按钮之前,我想不要对我的文本框进行任何验证,该按钮将尝试验证表单上的所有控件。这样,用户在转移到另一个之前不会被迫将数据输入控件。声音合理吗?这是我在winforms UI中的第一次破解。

2 个答案:

答案 0 :(得分:0)

看起来这是一个已知问题:Visual Studio Feedback

我在表单上设置了AutoValidate = AutoValidate.Disable;,并且不再进行验证。我不确定你的位置符合你的要求。

答案 1 :(得分:0)

我后来发现了一个名为AutoValidate的形式的简单属性。我将它设置为EnableAllowFocusChange,现在我有了我想要的确切行为,当用户离开控件并且验证失败时,errorprovider会发出警告,但用户不受限制。