我正在与visual studio 2013
一起C#
制作winform
应用程序。在我的表格上,我有几个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();
}
}
现在,我强制用户确保在继续我的表单之前正确填写此字段(这是我的表单上的第一个文本框)。
这就是我的问题所在,当我单击取消按钮时,它只是击中了我的aTextBox_Validation
事件中的else
。强迫我在点击取消按钮之前输入正确的值。
我已经做了一些谷歌搜索,试图弄清楚如何解决它。我尝试过的一些事情是:
cancelButton.CausesValidation = false;
在我的cancelButton_Click
事件中,不起作用。
试图设置一个bool
标志来做与^几乎相同的事情,这似乎也不起作用。
任何想法或推动到正确的地方?
您需要设置:
自动验证=启用允许焦点更改
在包含表单上。
您应该在"提交"按钮上进行验证。 问题是,当您离开文本字段时,Validated
事件总是会触发,因此即使您单击"取消"按钮也会发生这种情况。
如果在文本框失去焦点时运行文本框验证,则点击取消按钮将导致文本框失去焦点,从而在关闭之前进行验证。