日期时间选择器验证

5

非常抱歉发布这个问题可能对所有人来说都很傻,但我没有得到确切的解决方案。

问题是:在我的项目中有一个日期时间选择器,它出现在表单中的3个文本框之后,如果没有在文本框中输入文本并提交,它会给出一个消息(验证)提示需要输入数据。同样,如果未选择日期,应该继续执行。

如何编写代码实现呢?下面是用于其他文本框的代码,但不适用于日期时间选择器控件:

       if (dateInsert.Value.ToString() = string.Empty)
        {
            MessageBox.Show("Please select date!");
            dateInsert.Focus();
            return;
        }

1
我会通过以下方式检查日期是否有效:DateTime _temp; DateTime.TryParse(dtPicker.Value.ToString(), out _temp);如果返回 true,则 DateTime 是有效的。 - jAC
1
在 if (dateInsert.Value.ToString() == string.Empty) 中加入“==”,然后检查您的代码是否有效。 - user2749421
5个回答

5
请修改代码并查看是否有效。
               if (dateInsert.Value.ToString() == "")
              {
                MessageBox.Show("Please select date!");
                dateInsert.Focus();
                return;
               }

2

没有直接清空 DateTimePicker 的解决方案。唯一的方法是设置 CustomFormat,然后将 empty space 设置为值。

dateTimePicker1.Format = DateTimePickerFormat.Custom;
dateTimePicker1.CustomFormat = " ";

即使您在控件中进行了赋值,但如果您在代码中访问该控件的 value 属性,则会返回当前日期时间。因此,您的条件将始终为 false。
//This is always false
dateInsert.Value.ToString() = string.Empty

解决方案

在条件语句中,使用 Text 替代 Value

if(dateInsert.Text = " ")

1
如果我使用您提供的代码,datetimepicker的值将变为空,我对此非常担心,但它只解决了一半的问题,剩下的是,即使我没有选择日期,它也会被提交。如果我没有选择/更改日期,则不应提交该值。对于造成的混淆,我感到很抱歉。 - karthik reddy
@karthikreddy 你在表单加载时清除了datetimepicker的值吗?它最初持有的值是什么?默认日期时间? - Kurubaran
是的,我只在表单加载时清除,并且我得到的值是今天的日期。 - karthik reddy
@karthikreddy,当前日期无效吗?也就是说,用户只能输入未来或过去的日期? - Kurubaran
是的,用户应该选择过去的日期。在用户选择日期之前,表单不应该被提交。感谢您与我合作时的耐心。 - karthik reddy

0
if (string.IsNullOrEmpty(dateInsert.Text)
          {
            MessageBox.Show("Please select date!");
            dateInsert.Focus();
            return;
           }

希望这能帮助到某个人


0
如果你正在使用Visual Studio......请使用此代码验证空文本框。
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" runat="server" Display="None"
        ErrorMessage="Select Date" ControlToValidate="dateInsert" ValidationGroup="validation"> </asp:RequiredFieldValidator>

1
我正在使用C#编写Windows窗体应用程序。 - karthik reddy
请查看此链接...它可能会对您有所帮助... - Karthik_SD

-1
if(datepicker.Text == " ")
messagebox.show("Please Select Date");

// this works 100 %

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接