而不是使用if(numberEntered <1 || numberEntered> 24),是否可以使用正则expression式来检查字段是否是24小时制格式,例如23:00。
private void textBox4_Validating(object sender, CancelEventArgs e) { { int numberEntered; if (int.TryParse(textBox4.Text, out numberEntered)) { if (numberEntered < 1 || numberEntered > 28) { MessageBox.Show("You have to enter a number between 1 and 28"); textBox4.Text = 5.ToString(); } } else { MessageBox.Show("You need to enter an integer (number)"); textBox4.Text = 5.ToString(); } }
string time = "23:00"; var time24 = new Regex(@"^(20|21|22|23|[01]\d|\d)(([:][0-5]\d){1,2})$"); bool is24hTime = time24.IsMatch(time);
可能会工作,但我认为DateTime.TryParse是要走的路。
可能吗? 是。 这是首选吗? 没有。最好是将字符串解析为一个整数,然后像当前那样使用正则表达式进行验证。 正则表达式并没有真正做你所要求的,所以得到的正则表达式会很尴尬。
正如乔纳斯所说,使用DateTime.TryParse
比使用正则表达式更可取,但是,您可能需要考虑使用DataTimePicker
控件。
如果将Format
属性设置为Custom
,然后将CustomFormat
属性设置为HH:mm
,则会得到一个类似控件的文本框,将输入限制为24小时。
最后,如果将ShowUpDown
设置为true
,则不再可以看到日历,而是显示updown。