按钮点击winforms c#验证输入

Mat*_*ijs 2 c# winforms

我在文本框中验证userinput有一个小问题.

有一个带有各种文本框的用户控件,用户可以在其中输入数据以将新记录添加到数据库.当这些文本框中的任何一个没有正确的值(null或特定)时,我希望取消插入并让'errormaking'文本框获得焦点.

必须通过按钮检查.我可以调用按钮的Validating事件,还是有不同的(更好的)方法来实现这个?

此外,还有一个取消按钮取消整个插入.当尝试使用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();
        }
    }
Run Code Online (Sandbox Code Playgroud)

Ser*_*kiy 5

创建单个实例ErrorProvider并将其放在表单上.在验证每个单独的控件时不要创建错误提供程序.然后订阅文本框Validating事件(您可以对所有文本框使用相同的处理程序):

private void textBox_Validating(object sender, CancelEventArgs e)
{
    TextBox tb = (TextBox)sender;

    if (String.IsNullOrEmpty(tb.Text))
    {
        errorProvider.SetError(tb, "*");
        e.Cancel = true; 
        return;          
    }

    errorProvider.SetError(tb, String.Empty);
}
Run Code Online (Sandbox Code Playgroud)

单击"取消"按钮时,为了避免验证,请将其CauseValidation属性设置为false.

更新:因此,您正在验证用户控件中的控件,您应该在单击取消按钮时禁用该验证:

private void CancelButton_Click(object sender, EventArgs e)
{
    userControl.AutoValidate = AutoValidate.Disable;
    Close();
}
Run Code Online (Sandbox Code Playgroud)