C# DateTimePicker默认为下周的星期五
有没有一种方法可以将DateTimePicker默认为下一个星期五,这样它也应该默认为下一个星期的星期五。即使他们选择了本周的星期五。 我尝试使用以下代码:但是在修改C# DateTimePicker默认为下周的星期五,c#,datetimepicker,C#,Datetimepicker,有没有一种方法可以将DateTimePicker默认为下一个星期五,这样它也应该默认为下一个星期的星期五。即使他们选择了本周的星期五。 我尝试使用以下代码:但是在修改 if(selectedDate.DayOfWeek!=DayOfWeek.Friday)to: if(selectedDate.DayOfWeek==DayOfWeek.Friday)it循环。当下面的设置为Friday时,它会点击已更改的事件并显示为Friday,(selectedDate.DayOfWeek==DayOfWee
if(selectedDate.DayOfWeek!=DayOfWeek.Friday)
to:if(selectedDate.DayOfWeek==DayOfWeek.Friday)
it循环。当下面的设置为Friday时,它会点击已更改的事件并显示为Friday,(selectedDate.DayOfWeek==DayOfWeek.Friday)
代码也会导致无限循环
var dtp = pSender as DateTimePicker;
var selectedDate = dtp.Value;
if (selectedDate.DayOfWeek != DayOfWeek.Friday)
{
var offset = (int)DayOfWeek.Friday - (int)selectedDate.DayOfWeek + 7; //Friday after current week.
var friday = selectedDate + TimeSpan.FromDays(offset);
dtp.Value = friday;
}
感谢您的时间,如果您处理
DateTimePicker.ValueChanged
事件并更改其中的值,这将是一个无限循环。您可以只在窗体的构造函数中执行该操作,也可以检查是否以编程方式完成:
private bool dtpChangedManually = false;
protected void Dtp_ValueChanged(Object sender, EventArgs e)
{
if (dtpChangedManually)
{
dtpChangedManually = false;
return;
}
dtpChangedManually = true;
var pSender = (DateTimePicker) sender;
int daysUntilFridDay = ((int)DayOfWeek.Friday - (int)pSender.Value.DayOfWeek + 7) % 7;
if(daysUntilFridDay == 0) daysUntilFridDay = 7;
DateTime nextFriday = pSender.Value.AddDays(daysUntilFridDay);
pSender.Value = nextFriday;
}
当然,如果您处理DateTimePicker.ValueChanged
事件并更改其中的值,则这是一个无限循环。您可以只在窗体的构造函数中执行该操作,也可以检查是否以编程方式完成:
private bool dtpChangedManually = false;
protected void Dtp_ValueChanged(Object sender, EventArgs e)
{
if (dtpChangedManually)
{
dtpChangedManually = false;
return;
}
dtpChangedManually = true;
var pSender = (DateTimePicker) sender;
int daysUntilFridDay = ((int)DayOfWeek.Friday - (int)pSender.Value.DayOfWeek + 7) % 7;
if(daysUntilFridDay == 0) daysUntilFridDay = 7;
DateTime nextFriday = pSender.Value.AddDays(daysUntilFridDay);
pSender.Value = nextFriday;
}
当然,如果您处理DateTimePicker.ValueChanged
事件并更改其中的值,则这是一个无限循环。您可以只在窗体的构造函数中执行该操作,也可以检查是否以编程方式完成:
private bool dtpChangedManually = false;
protected void Dtp_ValueChanged(Object sender, EventArgs e)
{
if (dtpChangedManually)
{
dtpChangedManually = false;
return;
}
dtpChangedManually = true;
var pSender = (DateTimePicker) sender;
int daysUntilFridDay = ((int)DayOfWeek.Friday - (int)pSender.Value.DayOfWeek + 7) % 7;
if(daysUntilFridDay == 0) daysUntilFridDay = 7;
DateTime nextFriday = pSender.Value.AddDays(daysUntilFridDay);
pSender.Value = nextFriday;
}
当然,如果您处理DateTimePicker.ValueChanged
事件并更改其中的值,则这是一个无限循环。您可以只在窗体的构造函数中执行该操作,也可以检查是否以编程方式完成:
private bool dtpChangedManually = false;
protected void Dtp_ValueChanged(Object sender, EventArgs e)
{
if (dtpChangedManually)
{
dtpChangedManually = false;
return;
}
dtpChangedManually = true;
var pSender = (DateTimePicker) sender;
int daysUntilFridDay = ((int)DayOfWeek.Friday - (int)pSender.Value.DayOfWeek + 7) % 7;
if(daysUntilFridDay == 0) daysUntilFridDay = 7;
DateTime nextFriday = pSender.Value.AddDays(daysUntilFridDay);
pSender.Value = nextFriday;
}
谢谢,蒂姆,很好。我已经完成了代码,可以看出哪里出了问题。我尝试过的一件事是将其添加到自己的函数中,并在事件中调用此函数。。但是,发件人周围存在错误。这是不可能的吗?您只能在事件中访问发送者
参数,如果您调用一个方法,您应该传递日期时间选择器
,或者让该方法只返回日期时间
。非常感谢您的帮助!谢谢,谢谢,蒂姆,很好。我已经完成了代码,可以看出哪里出了问题。我尝试过的一件事是将其添加到自己的函数中,并在事件中调用此函数。。但是,发件人周围存在错误。这是不可能的吗?您只能在事件中访问发送者
参数,如果您调用一个方法,您应该传递日期时间选择器
,或者让该方法只返回日期时间
。非常感谢您的帮助!谢谢,谢谢,蒂姆,很好。我已经完成了代码,可以看出哪里出了问题。我尝试过的一件事是将其添加到自己的函数中,并在事件中调用此函数。。但是,发件人周围存在错误。这是不可能的吗?您只能在事件中访问发送者
参数,如果您调用一个方法,您应该传递日期时间选择器
,或者让该方法只返回日期时间
。非常感谢您的帮助!谢谢,谢谢,蒂姆,很好。我已经完成了代码,可以看出哪里出了问题。我尝试过的一件事是将其添加到自己的函数中,并在事件中调用此函数。。但是,发件人周围存在错误。这是不可能的吗?您只能在事件中访问发送者
参数,如果您调用一个方法,您应该传递日期时间选择器
,或者让该方法只返回日期时间
。非常感谢您的帮助!谢谢