C# 在WinC窗体上单击按钮验证输入#

C# 在WinC窗体上单击按钮验证输入#,c#,winforms,C#,Winforms,我在验证文本框中的用户输入时遇到了一个小问题 有一个带有各种文本框的usercontrol,用户可以在其中输入数据以向数据库添加新记录。当这些文本框中的任何一个没有正确的值(null或specific)时,我希望取消插入并使“errormaking”文本框接收焦点 这必须通过按钮进行检查。我是否可以调用按钮的验证事件,或者是否有其他(更好的)方法来获取此消息 此外,还有一个取消按钮,用于取消整个插入。尝试使用errorprovider时,“取消”按钮也不可用,因为该字段为空,因此无法发送 一些代

我在验证文本框中的用户输入时遇到了一个小问题

有一个带有各种文本框的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();
}