对Windows窗体上的字段执行数据验证的最简单方法

R.S*_*S.K 6 .net c# validation .net-3.5 winforms

我有一个Windows窗体项目,我想强制用户在按下底部的计算按钮之前在某些字段中输入值.这些字段包括三对单选按钮,五个文本框和一个组合框.所以基本上所有这些字段都需要包含一个值才能执行计算.此外,文本框应包含数字 - 任何双精度值.此外,我想为大多数这些文本框设置最大值用户不能超过.请让我知道实现这一目标的最简单方法是什么.我没有看到winform项目的字段验证控件,如ASP.Net中提供的控件.请注意,我正在研究.net 3.5.目前,我正在使用消息框将此信息传达给用户,即每当用户按下计算时,我会显示消息框,提示当前为空的所需字段的名称.

Zee*_*mal 11

我遇到了和你一样的情况,我找到了一个简单的解决方案,或者你可以说WinForms可以使用简单的解决方案.WinForms包含一个控件ErrorProvider,可以帮助我们在必填字段上显示错误. 是您可以找到其使用的链接,或者只是谷歌它.

ErrorProvider可以按照您想要的方式使用,例如,对于文本框,您可以在TextChanged事件中或在任何其他让我们说按钮的事件内使用它,如下所示:

if (!int.TryParse(strNumber, out result))
{
    errorProvider.SetError(tbNumber, "Only Integers are allowed");
}
else
{
    errorProvider.Clear();
}
Run Code Online (Sandbox Code Playgroud)


小智 5

你可以试试这个:

private void Calculate_button_Click(object sender, EventArgs e)
{
    RadioButton[] newRadioButtons = { radiobutton1, radiobutton2, radiobutton3 };
    for (int inti = 0; inti < newRadioButtons.Length; inti++)
    {
        if (newRadioButton[inti].Checked == false)
        {
            MessageBox.Show("Please check the radio button");
            newRadioButtons[inti].Focus();
            return;
        }
    }
    TextBox[] newTextBox = { txtbox1, txtbox2, txtbox3, txtbox4, txtbox5 };
    for (int inti = 0; inti < newRadioButtons.Length; inti++)
    {
        if (newTextBox[inti].text == string.Empty)
        {
            MessageBox.Show("Please fill the text box");
            newTextBox[inti].Focus();
            return;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

您可以循环遍历控件并查找它们是否已填充,如果未填充,它将显示在消息框中,并且特定控件将被聚焦。


小智 0

尝试使用控件的 Validating 事件并在其中编写您需要的任何验证。

下面是一个示例,它使用一些 ValidateEmail 函数来检查文本是否是电子邮件地址,如果不匹配,则将背景设置为某种(红色?)颜色,并且在匹配之前不允许用户离开控制权。

Private Sub VoucherEmail_Validating(ByVal sender As System.Object, ByVal e As System.ComponentModel.CancelEventArgs) Handles Textbox.Validating
    If Not ValidateEmail(sender.Text) Then
        sender.backcolour = Validation.ErrorBackgrounColor
        e.Cancel = True
    End If
End Sub
Run Code Online (Sandbox Code Playgroud)