2017-02-16 96 views
-1

我正在開發一個應用程序。我最初想讓用戶只選擇一個星期一。花了相當長的時間後,我發現那不可能,除非我創造我自己的控制。如何在MonthCalendar控件中每個星期一加粗?

因此,我想知道我如何讓星期一的Bold(甚至改變背景顏色),所以它更引人注目?

有沒有一種方法可以通過編程方式選擇一個星期一(同一周),無論一週選擇哪一天?

例如,如果他們點擊2/16,則會自動選擇2/13。

回答

1

我已經在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); 
     } 

很多整潔。

+0

謝謝。我正在使用monthCalendar,並且ValueChanged沒有事件。我會看到相同的事件是什麼。奇怪的是,當你選擇一個日期出現在前一個月的日期時(我選擇了2/3/17和繁榮崩潰) –

相關問題