[VB.Net] PobaMonthCalendar
微軟本身有提供 MonthCalendar 可以操作,但對於開發者而言,所提供的功能太少。舉例而言,若想在指定(非週期性)的日期上做特別顯示,微軟提供的 MonthCalendar 僅能改變 BoldedDates,換言之,日期只能決定是否以粗體表示,而背景顏色、字體顏色等皆無法做更改。正當筆者邊爬文邊思考是否要時做一個 UserControl 時,意外地發現第三方的 MonthCalendar:PobaMonthCalendar。
圖 1 PobaMonthCalendar
PobaMonthCalendar 是由國外的作者 Patrik Bohman 於 29th June, 2005 產出(Version 1.0.0.0),在開發後仍持續更新到 16th August, 2006(Version 1.8.2),也就是目前的最新版本。雖然在外觀上 PobaMonthCalendar 相較於微軟所提供的為之遜色,但高度自由即是他的勝出關鍵。
在這份 CodeProject 中,作者提供兩份 Demo(基於不同的 .NET Framework)並皆釋出 Source Code,文章中對於其 Properties、Events 或 Methods 皆有非常詳細的說明,請參考 PobaMonthCalendar 的 CodeProject 頁面。
而這篇文章主要是筆記如何將第三方 UserControl 加入至工具箱內,並稍微介紹 PobaMonthCalendar 的使用方法。筆者所使用的 IDE 為 VS2015 版本。
首先先開啟一個 WindowsFormApplication Project,接著來到設計畫面,叫出工具箱側欄並對標籤按下右鍵選擇「選擇項目」。
圖 2 進入選擇項目
在 .NET Framework 元件的標籤下按下瀏覽,並加入由 CodeProject 所下載的 Demo 中的MonthCalendar.dll。確認加入至 .NET Framework 元件後按下確定,之後就會發現 PobaMonthCalendar 已經出現在工具箱囉。
圖 3 確認加入 PobaMonthCalendar
圖 4 MonthCalendar 已加入至工具箱成功
以上就是如何將第三方 MonthCalendar 加入至工具箱的方法。而已加入的 MonthCalendar 和其他元件一樣,可以藉由拖曳、拉放來調整控制項外觀。
PobaMonthCalendar 中 Layout 主要分為五個部分:
PobaMonthCalendar 中 Layout 主要分為五個部分:
- Header 標題
- Weekdays 星期數
- Weeknumbers 週數
- Month 日期區
- Footer 頁腳
圖 5 PobaMonthCalendar Layout
PobaMonthCalendar 提供豐富的外觀屬性可以做設置:
- BorderColor: 表示 MonthCalendar 的色彩
- ShowFooter: 表示是否顯示 MonthCalendar 下方的頁腳,預設為 True
- ShowHeader: 表示是否顯示 MonthCalendar 上方的標頭,預設為 True
- BorderStyle: 表示 MonthCalendar 的樣式
- ShowToday: 表示是否標記(Mark)當天,預設為 True
- ShowWeekdays: 表示是否顯示 MonthCalendar 上方的星期數欄,預設為 True
- ShowWeeknumbers: 表示是否顯示 MonthCalendar 左方的週數欄,預設為 False
- TodayColor: 表示標記當天色彩的顏色
在 PobaMonthCalendar 中,我們可以利用副程式來設定指定日期的字體與顏色:
若想要重繪 PobaMonthCalendar,可利用 ResetDateInfo 方法來還原 PobaMonthCalendar 的所有字體與顏色配置。
''' <summary> ''' 設定 [MonthCalendar] 中指定日期處的文字樣式 ''' </summary> ''' <param name="[MonthCalendar]">目標 MonthCalendar</param> ''' <param name="[Date]">欲變更之指定日期</param> ''' <param name="[DateColor]">欲設定之色彩</param> ''' <param name="[BoldedDate]">是否以粗體顯示</param> Private Sub SetMcBoldedDates(ByVal [MonthCalendar] As Pabo.Calendar.MonthCalendar, ByVal [Date] As DateTime, ByVal [DateColor] As Color, ByVal [BoldedDate] As Boolean) Dim di As New Pabo.Calendar.DateItem di.Date = [Date] di.DateColor = [DateColor] di.BoldedDate = [BoldedDate] [MonthCalendar].AddDateInfo(di) End Sub
若想要重繪 PobaMonthCalendar,可利用 ResetDateInfo 方法來還原 PobaMonthCalendar 的所有字體與顏色配置。
[MonthCalendar].ResetDateInfo()
當使用者變更 PobaMonthCalendar 中所選取的日期時,會引發 DaySelected 事件。若要獲取 PobaMonthCalendar 中選取的日期,可以從 SelectedDates 的得到。PobaMonthCalendar.SelectedDates() 會回傳使用者在 PobaMonthCalendar 所選取的 DateTime 集合。
For Each [SelectedDate] As DateTime In MonthCalendar1.SelectedDates Console.WriteLine([SelectedDate].ToString) Next
留言
張貼留言