Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/opencv/3.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#_Wpf_Loops_Datepicker - Fatal编程技术网

C# 使用循环进行验证,然后允许用户再次输入

C# 使用循环进行验证,然后允许用户再次输入,c#,wpf,loops,datepicker,C#,Wpf,Loops,Datepicker,我试图在C#中验证我的WPF程序,以检查用户是否在我的DatePicker事件中输入了日期。如果用户没有输入日期,我希望它允许用户在再次运行整个程序之前重新输入数据。如果用户输入的数字小于1或大于10,我也希望它也这样做。然而,目前,它只是继续与该计划的其余部分,导致它后来打破 我的“textbox”事件称为UserInput,我的日期选择器称为“RequestedDate” 我的代码: if (int.TryParse(UserInput.Text, out numberEntered)) {

我试图在C#中验证我的WPF程序,以检查用户是否在我的DatePicker事件中输入了日期。如果用户没有输入日期,我希望它允许用户在再次运行整个程序之前重新输入数据。如果用户输入的数字小于1或大于10,我也希望它也这样做。然而,目前,它只是继续与该计划的其余部分,导致它后来打破

我的“textbox”事件称为UserInput,我的日期选择器称为“RequestedDate”

我的代码:

if (int.TryParse(UserInput.Text, out numberEntered))
{

    while (DateRequested.SelectedDate == null)
    {
        MessageBox.Show("You have not input a valid date");
        Output.Text = "Please try again";

    }

       while (numberEntered < 1 || numberEntered > 10)
    {
        MessageBox.Show("You can only book tickets with values more than one or less than 10");
        Output.Text = "Please try again";
        break;
    }

    Output.Text = "Number of tickets selected: " + UserInput.Text + "Date: " + DateRequested.Text;
}
if(int.TryParse(UserInput.Text,out numberEntered))
{
while(DateRequested.SelectedDate==null)
{
MessageBox.Show(“您没有输入有效日期”);
Output.Text=“请重试”;
}
而(numberEntered<1 | | numberEntered>10)
{
MessageBox.Show(“您只能预订值大于1或小于10的票证”);
Output.Text=“请重试”;
打破
}
Output.Text=“所选票证数量:”+UserInput.Text+“日期:”+DateRequested.Text;
}

这里有几个问题:

1-UI元素不是“事件”,因此没有“事件”这样的东西
文本框事件

2-。因此,你应该把你的逻辑抽象成 查看模型并对其进行操作


发布您的XAML,我将编辑我的答案,显示实现此功能的正确方法。

您只需将
文本框绑定到
日期时间
对象,这将通过在
文本框
周围添加红色边框向用户反馈输入的数据是否不正确


如果
DateTime
是必需的,您应该为
TextBox
设置一个
ValidationRule
来进行验证,不需要将所有这些UI逻辑拖到您的模型中。

您不应该使用循环。只需使用
if…
块或类似语句进行验证,并在出现问题时提示用户。让他们再次单击submit按钮,并从一开始就进行验证…您应该使用wpf方式进行验证,并设置验证规则。按照代码的方式,您也可以使用winforms。您的第一个while循环中似乎缺少一个中断,该循环应该是一个if语句。注意:如果您不确定如何使用ValidationRules,请查看MSDN上的示例