【发布时间】:2017-02-16 14:41:39
【问题描述】:
我正在开发一个应用程序。我最初想让用户只选择一个星期一。花了相当多的时间后,我发现除非我创建自己的控件,否则这是不可能的。
因此我想知道如何使星期一的粗体(甚至更改背景颜色)使其更明显?
有没有办法以编程方式选择(同一周的)星期一,无论选择一周中的哪一天?
例如,如果他们点击 2/16,则会自动选择该 2/13。
【问题讨论】:
标签: c# winforms monthcalendar
我正在开发一个应用程序。我最初想让用户只选择一个星期一。花了相当多的时间后,我发现除非我创建自己的控件,否则这是不可能的。
因此我想知道如何使星期一的粗体(甚至更改背景颜色)使其更明显?
有没有办法以编程方式选择(同一周的)星期一,无论选择一周中的哪一天?
例如,如果他们点击 2/16,则会自动选择该 2/13。
【问题讨论】:
标签: c# winforms monthcalendar
我在日期时间选择器值更改事件中完成了此操作。 似乎工作。希望对您有所帮助!
private void dtP1_ValueChanged(object sender, EventArgs e)
{
var days = DayOfWeek.Monday - dtP1.Value.DayOfWeek;
if (dtP1.Value.DayOfWeek != DayOfWeek.Monday)
{
dtP1.Value = new DateTime(dtP1.Value.Year, dtP1.Value.Month, dtP1.Value.Day + days);
}
}
我已经设法为它编写和扩展方法。
public static class DateTimeHelper
{
public static void AlwaysChooseMonday(this DateTimePicker dtp, DateTime value)
{
var days = DayOfWeek.Monday - dtp.Value.DayOfWeek;
if (dtp.Value.DayOfWeek != DayOfWeek.Monday)
{
dtp.Value = new DateTime(dtp.Value.Year, dtp.Value.Month, dtp.Value.Day + days);
}
}
}
那么值改变事件就变成了
private void dtp1(object sender, EventArgs e)
{
dtP1.AlwaysChooseMonday(dtP1.Value);
}
整洁很多。
【讨论】: