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