我正在使用winform
在C#
中制作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
标志设置为与^完全相同,但似乎也没有用。
任何想法或推送到正确的地方?
答案 0 :(得分:2)
您需要设置:
AutoValidate = EnableAllowFocusChange
在包含的表格上。
答案 1 :(得分:0)
您应该在“提交”按钮上进行验证。问题是,Validated
事件总是在您离开文本字段时触发,因此即使您单击“取消”按钮也会发生这种情况。
答案 2 :(得分:0)
如果在文本框失去焦点时运行文本框验证,则点击取消按钮将导致文本框失去焦点,从而在关闭之前进行验证。