C# 在WinC窗体上单击按钮验证输入#
我在验证文本框中的用户输入时遇到了一个小问题 有一个带有各种文本框的usercontrol,用户可以在其中输入数据以向数据库添加新记录。当这些文本框中的任何一个没有正确的值(null或specific)时,我希望取消插入并使“errormaking”文本框接收焦点 这必须通过按钮进行检查。我是否可以调用按钮的验证事件,或者是否有其他(更好的)方法来获取此消息 此外,还有一个取消按钮,用于取消整个插入。尝试使用errorprovider时,“取消”按钮也不可用,因为该字段为空,因此无法发送 一些代码供参考:C# 在WinC窗体上单击按钮验证输入#,c#,winforms,C#,Winforms,我在验证文本框中的用户输入时遇到了一个小问题 有一个带有各种文本框的usercontrol,用户可以在其中输入数据以向数据库添加新记录。当这些文本框中的任何一个没有正确的值(null或specific)时,我希望取消插入并使“errormaking”文本框接收焦点 这必须通过按钮进行检查。我是否可以调用按钮的验证事件,或者是否有其他(更好的)方法来获取此消息 此外,还有一个取消按钮,用于取消整个插入。尝试使用errorprovider时,“取消”按钮也不可用,因为该字段为空,因此无法发送 一些代
private void CheckInput(CancelEventArgs e, TextBox tb)
{
ErrorProvider error = new ErrorProvider();
if (string.IsNullOrEmpty(tb.Text))
{
error.SetError(tb, "*");
e.Cancel = true;
}
if (!string.IsNullOrEmpty(tb.Text))
{
error.SetError(tb, string.Empty);
error.Clear();
error.Dispose();
}
}
创建
ErrorProvider
的单个实例,并将其放置在表单上。在验证每个单独控件期间,不要创建错误提供程序。然后订阅textbox事件(您可以对所有textbox使用相同的处理程序):
为了避免在单击“取消”按钮时进行验证,请将其属性设置为false
更新:因此,您正在验证用户控件中的控件,当您单击“取消”按钮时,应禁用该验证:
private void CancelButton_Click(object sender, EventArgs e)
{
userControl.AutoValidate = AutoValidate.Disable;
Close();
}
这仍然无法解决我的问题,即如果文本框为空,则允许用户单击取消按钮。我该怎么解决?我真的试过了。表单仍未关闭(单击取消按钮,表单将关闭)。这与输入是在用户控件内完成的,而按钮在用户控件外这一事实有什么关系吗?你真是个天才!非常感谢:)
private void CancelButton_Click(object sender, EventArgs e)
{
userControl.AutoValidate = AutoValidate.Disable;
Close();
}