私はこれをdatetime picker value changedイベントで行っています。 動作するようです。それが役に立てば幸い!
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);
}
ロット滑らかな印象になります。
ありがとうございました。私はmonthCalendarを使用しており、ValueChangedのイベントはありません。私は同等の出来事が何であるかを見るでしょう。奇妙なことに、前月に月曜日に発生した日付を選択すると失敗します(2/3/17を選択し、ブームクラッシュ) –