Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/300.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#Winform文本框验证取消按钮_C#_Winforms_Validation_Event Handling_Visual Studio 2013 - Fatal编程技术网

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

C#Winform文本框验证取消按钮,c#,winforms,validation,event-handling,visual-studio-2013,C#,Winforms,Validation,Event Handling,Visual Studio 2013,我正在用visual studio 2013在C中制作一个winform应用程序。在我的表单上有几个文本框和几个按钮 更具体地说,我有一个cancel按钮,单击该按钮将关闭应用程序,该应用程序在此处通过此事件进行处理 private void cancelButton_Click(object sender, EventArgs e) { //close the application Application.Exit(); } 我有一个TextBox\u验证的事件,看起来像这

我正在用visual studio 2013在
C
中制作一个
winform
应用程序。在我的表单上有几个
文本框
和几个
按钮

更具体地说,我有一个
cancel按钮
,单击该按钮将关闭应用程序,该应用程序在此处通过此事件进行处理

private void cancelButton_Click(object sender, EventArgs e)
{
    //close the application
    Application.Exit();
}
我有一个
TextBox\u验证的
事件,看起来像这样

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();
    }
}
现在,我强制用户在继续我的表单之前确保正确填写此字段(这是我表单上的第一个文本框)

这就是我的问题所在,当我单击我的取消按钮时,它只会在我的
aTextBox\u验证
事件中点击
else
。在按下“取消”按钮之前,强制我键入正确的值

我在谷歌上做了一点尝试,想知道如何修复它。我尝试过的一些方法是:

cancelButton.CausesValidation=false在我的<代码>取消按钮\u单击事件中,未工作

试图设置一个
bool
标志来执行与^几乎相同的操作,但似乎也不起作用


你有什么想法或想法需要推到正确的地方吗?

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

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

您需要设置:

自动验证=启用AllowFocusChange


在包含表单上。

在哪里声明了someStringArray变量?它是否包含someString变量值?我会尝试验证submit按钮上的所有文本框。这是非常正常的行为。这将解决您的问题,并防止最终客户因您不断将注意力转移到他们身上而感到沮丧。@yosoy数组处于类级别,您没有抓住我问题的重点。设置
cancelButton.CausesValidation=false太晚了。在设计器中设置该值。@jonesy我已将所有验证移到“确定”按钮(提交)。但是,当我点击“确定”时,我的错误信息会显示出来,但随后我的流程的其余部分会开始,当然会出现错误。我已将所有内容都移动到“确定”按钮(或“提交”)中。但是,当文本框值无效时,将显示错误消息,但随后程序的其余部分将继续,我相信我必须将我的一些逻辑与我的
if/else
混淆,我应该让它按照我的意愿工作。谢谢