Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/301.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#-文本框验证_C#_.net_Winforms_Validation - Fatal编程技术网

C#-文本框验证

C#-文本框验证,c#,.net,winforms,validation,C#,.net,Winforms,Validation,我有一些代码可以检查并确保当用户在字段中输入1-10之间的整数时必须输入 虽然如果用户关注该字段,“坏”数据(如“fdgfdg”)仍保留在该字段中。因此,如果数据无效,一些人能否演示当焦点在字段上丢失时,将如何输入默认值,例如5 private void textBox4_TextChanged(object sender, EventArgs e) { try { int numberEntered

我有一些代码可以检查并确保当用户在字段中输入1-10之间的整数时必须输入

虽然如果用户关注该字段,“坏”数据(如“fdgfdg”)仍保留在该字段中。因此,如果数据无效,一些人能否演示当焦点在字段上丢失时,将如何输入默认值,例如5

private void textBox4_TextChanged(object sender, EventArgs e)
        {
            try
            {
                int numberEntered = int.Parse(textBox4.Text);
                if (numberEntered < 1 || numberEntered > 10)
                {
                    MessageBox.Show("You must enter a number between 1 and 10");
                }
            }
            catch (FormatException)
            {

                MessageBox.Show("You need to enter an integer");
            }
        }
private void textBox4\u TextChanged(对象发送方,事件参数e)
{
尝试
{
int numberEntered=int.Parse(textBox4.Text);
如果(numberEntered<1 | | numberEntered>10)
{
Show(“您必须输入一个介于1和10之间的数字”);
}
}
捕获(格式化异常)
{
Show(“您需要输入一个整数”);
}
}

看一看,我会使用

如果您像这里一样手动滚动验证,您需要做的就是在MessageBox.Show()之后设置默认值


在标准winforms中,我认为您没有任何验证框架支持,但您可以看看这个:为了获得灵感,您不必将此逻辑分散到整个应用程序中

使用textbox控件上的事件来验证和设置默认值

这里有几个事件可以使用,
离开
LostFocus
Validating
上有更多关于这些不同事件的讨论

在某些情况下,
Leave
LostFocus
不会触发,因此在您的情况下最好使用
Validating
事件:

    textBox1.Validating += new CancelEventHandler(textBox1_Validating);


    void textBox1_Validating(object sender, CancelEventArgs e)
    {
        int numberEntered;

        if (int.TryParse(textBox1.Text, out numberEntered))
        {
            if  (numberEntered < 1 || numberEntered > 10) 
            { 
                MessageBox.Show("You have to enter a number between 1 and 10");
                textBox1.Text = 5.ToString();
            }
        }
        else
        {
            MessageBox.Show("You need to enter an integer");
            textBox1.Text = 5.ToString();
        }
    }
textBox1.Validating+=新的CancelEventHandler(textBox1\u Validating);
无效文本框1\u验证(对象发送方,取消事件参数e)
{
整数编码;
if(int.TryParse(textBox1.Text,out numberrentered))
{
如果(numberEntered<1 | | numberEntered>10)
{ 
Show(“您必须输入一个介于1和10之间的数字”);
textBox1.Text=5.ToString();
}
}
其他的
{
Show(“您需要输入一个整数”);
textBox1.Text=5.ToString();
}
}

@Gats:这是winforms桌面应用程序…这是winforms而不是网页。@Gats:即使是web应用程序,服务器端验证也是必需的。客户端验证应该是对服务器端验证的一种方便的补充。您还应该查看一个示例,它是向用户显示输入错误的一种简便方法。我是一个工具。这就是你在凌晨4点回答问题时发生的情况:)