C#Winform文本框验证中断取消按钮

时间:2014-04-01 12:49:26

标签: c# winforms validation event-handling visual-studio-2013

我正在使用winformC#中制作visual studio 2013个应用。在我的表单上,我有一些text-boxes和一对buttons

更具体地说,我有一个cancelButton,当点击将关闭应用程序时,此处将使用此事件处理。

private void cancelButton_Click(object sender, EventArgs e)
{
    //close the application
    Application.Exit();
}

我有TextBox_Validated事件看起来像这样

private void aTextBox_Validated(object sender, EventArgs e)
{
    int matchIntPosition;
    string someString = aTextBox.Text.ToUpper();

    //check a string array to see if the value entered exsists
    matchIntPosition= Array.IndexOf(someStringArray, someString);
    if (matchIntPosition > -1)
    {
        string someString = someStringArray[matchIntPosition];
    }
    else
    {
        MessageBox.Show("This value does not exist, Please try again.");
        aTextBox.Focus();
    }
}

现在我强制用户确保在继续我的表单之前正确填写此字段(这是我表单上的第一个文本框)。

以下是我的问题所在,当我点击我的cancelButton时,它只是点击else事件中的aTextBox_Validation。在我按下取消按钮之前强制我输入正确的值。

我做了一些google-ing试图弄清楚如何解决它。我尝试过的一些事情是:

cancelButton.CausesValidation = false;活动中的

cancelButton_Click无效。

试图将bool标志设置为与^完全相同,但似乎也没有用。

任何想法或推送到正确的地方?

3 个答案:

答案 0 :(得分:2)

您需要设置:

AutoValidate = EnableAllowFocusChange

在包含的表格上。

答案 1 :(得分:0)

您应该在“提交”按钮上进行验证。问题是,Validated事件总是在您离开文本字段时触发,因此即使您单击“取消”按钮也会发生这种情况。

答案 2 :(得分:0)

如果在文本框失去焦点时运行文本框验证,则点击取消按钮将导致文本框失去焦点,从而在关闭之前进行验证。