gpt4 book ai didi

C# 文本框短日期格式异常错误,Windows 窗体应用程序

转载 作者:行者123 更新时间:2023-11-30 23:14:16 24 4
gpt4 key购买 nike

我已经搜索并尝试了不到一个小时的时间。我不认为这应该很难做到,但无论出于何种原因,无论我更改什么,我在使用月历选择日期时都会遇到同样的错误。

我不确定我是在某个地方做的,还是 C# 对我喜怒无常。

使用中的表单控件的一些一般描述 - 有两个文本框(textBox3 和 textBox4)两个按钮(button5 和 button6)和两个月历(monthcalendar1 和 2)

当你点击任一按钮时,它会显示该按钮的月历,button5->monthcalendar1,和 button6->monthcalendar2:你可以选择一个日期,它会将那个日期放入相应的文本框,mc1-> textBox3, mc2->textBox4

现在您应该了解哪些控件位于何处的一些详细信息...这是我在用户选择日期时使用的代码,这对于 mc1 和 2 都是相似的,所以我可能只会发布代码其中 1 个....

private void monthCalendar2_DateSelected(object sender, DateRangeEventArgs e)
{
textBox4.Text = monthCalendar2.SelectionStart.ToShortDateString();
monthCalendar2.Location = new Point(306, 204);
monthCalendar2.Visible = false; //306,204
}

它像这样将数据存储在文本框中:m/d/yyyy,

所以我一直试图找出存储在 textBox3 和 textBox4 中的日期之间的区别; and have tried numourous configurations of code to try to get it to work, all come back with a format exception code error when teh date for textBox4 is selected::

private void monthCalendar1_DateChanged(object sender, DateRangeEventArgs e)
{
var startDate = DateTime.Parse(textBox3.Text);//, "M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
var endDate = DateTime.Parse(textBox4.Text);//, "M/d/yyyy"), System.Globalization.CultureInfo.InvariantCulture);
TimeSpan dateDiff = endDate - startDate;
string message = "";

if (endDate < startDate)
{
message = "Your departure date must be before your return date.";
}
else if(dateDiff.TotalDays == 0 || dateDiff.TotalDays == 1)
{
message = "Only planning one day of travel, please select one of the other options or select a longer period of travel.";
}
else if(dateDiff.TotalDays >= 7)
{
message = "Traveling less than or equal to seven days is not enough, select another option or a longer travel period.";
}
else
{
message = "Have a wonderful trip!";
}

MessageBox.Show(message, "Trip Notice");

}

我尝试过使用:

DateTime startDate, endDate;
startDate = DateTime.ParseExact(textBox3.Text,"M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);
endDate = DateTime.ParseExact(textBox4.Text,"M/d/yyyy", System.Globalization.CultureInfo.InvariantCulture);

那也行不通,所以我尝试了::

DateTime startDate, endDate;
startDate = Convert.toDateTime(textBox3.Text); //did the same for textBox4

也没用。我完全不知所措,这里的大多数帖子都让我原地打转。请帮忙。

最佳答案

这很可能是因为 DateChangedDateSelected 之前调用,而您的 Text 属性为空。这应该有效:

private void monthCalendar2_DateChanged(object sender, DateRangeEventArgs e)
{
// Update the text in TextBox4 first...
textBox4.Text = monthCalendar2.SelectionStart.ToShortDateString();

var startDate = DateTime.Parse(textBox3.Text);
var endDate = DateTime.Parse(textBox4.Text);

// Rest of the code omitted...

我认为您的代码逻辑还有其他问题,但看看这是否有效。


附言这是另一个逻辑问题...您使用的是“大于或等于”而不是“小于或等于”...

else if (dateDiff.TotalDays >= 7)
{
message = "Traveling less than or equal to seven days is not enough, ...";
}

关于C# 文本框短日期格式异常错误,Windows 窗体应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43196453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com