[C#] WinForms 實現行事曆應用的完整教學

閱讀時間約 5 分鐘

簡介

在這個教學中,我們將使用 C# 和 WinForms 來建立一個基本的行事曆應用。我們將使用 MonthCalendar 控制元件,這是一個方便的工具,可用於顯示和選擇日期。


建立 WinForms 應用

首先,打開 Visual Studio,建立一個新的 Windows Forms 應用專案。命名你的專案,然後在表單上添加一個 MonthCalendar 控制元件。

設定事件處理

在表單的程式碼中,設定 MonthCalendar 的 DateSelected 事件處理方法,這將在使用者選取日期時觸發。

using System;
using System.Windows.Forms;

namespace CalendarApp
{
public partial class MainForm : Form
{
public MainForm()
{
InitializeComponent();

// 設定事件處理方法
monthCalendar1.DateSelected += new DateRangeEventHandler(monthCalendar1_DateSelected);
}

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
// 在這裡處理日期選取事件
DateTime selectedDate = monthCalendar1.SelectionStart;
MessageBox.Show($"選取的日期是:{selectedDate.ToShortDateString()}", "日期選取");
}
}
}

自定義功能

你可以根據實際需求添加自定義功能,例如事件提醒、工作排程、生日提醒等。以下是一個簡單的例子,將選取的日期加粗顯示:

private void monthCalendar1_DateSelected(object sender, DateRangeEventArgs e)
{
// 在這裡處理日期選取事件
DateTime selectedDate = monthCalendar1.SelectionStart;

// 加粗顯示選取的日期
monthCalendar1.AddBoldedDate(selectedDate);
monthCalendar1.UpdateBoldedDates(); // 更新顯示

MessageBox.Show($"選取的日期是:{selectedDate.ToShortDateString()}", "日期選取");
}

常用方法

這個 MonthCalendar 控制元件還提供了一些常用的方法:

  1. AddBoldedDate(DateTime date): 將指定日期標記為粗體,通常用於標記特殊事件或節日。
    monthCalendar1.AddBoldedDate(new DateTime(2024, 1, 25));
  2. RemoveBoldedDate(DateTime date): 移除先前標記的粗體日期。
    monthCalendar1.RemoveBoldedDate(new DateTime(2024, 1, 25));
  3. SetSelectionRange(DateTime startDate, DateTime endDate): 設定選取的日期範圍。
    monthCalendar1.SetSelectionRange(new DateTime(2024, 1, 1), new DateTime(2024, 1, 7));
  4. SetDate(DateTime date): 設定 MonthCalendar 的選取日期。
    monthCalendar1.SetDate(new DateTime(2024, 1, 25));
  5. SetToday(): 將當前日期設定為今天,以粗體標記。
    monthCalendar1.SetToday();
  6. SetMaxDate(DateTime maxDate) 和 SetMinDate(DateTime minDate): 分別設定 MonthCalendar 的最大和最小日期。
    monthCalendar1.SetMaxDate(new DateTime(2024, 12, 31));
    monthCalendar1.SetMinDate(new DateTime(2024, 1, 1));
  7. TodayDate: 取得或設定 MonthCalendar 控制元件中的今天的日期。
    DateTime today = monthCalendar1.TodayDate;
  8. GetMonth(int year, int month): 取得指定年月的月曆信息。
    int[,] monthDays = monthCalendar1.GetMonth(2024, 1);

結論

這個教學向你展示了如何使用 C# 和 WinForms 建立一個簡單的行事曆應用。你可以根據這個基礎,添加更多自定義功能和改進,以滿足你的特定需求。MonthCalendar 控制元件提供了豐富的方法和事件,可以應用於各種應用場景。希望這個教學對你有所幫助!

67會員
118內容數
這裡將以輕鬆風格,深入探討程式設計的基礎和高級概念。從程式語言到演算法,我們將以易懂的方式解釋每個主題,讓你輕鬆掌握。無論你是初學者或有經驗者,都能在這裡找到適合你的內容。無論你的目標是成為專業開發者還是擴展知識,我們都會陪伴你一同成長!
留言0
查看全部
發表第一個留言支持創作者!
程式輕鬆玩 的其他內容
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
當我們需要在C#中批次更改資料夾中的檔案名稱時,我們可以使用一個自定義的C#類別。這個類別會讓我們指定資料夾路徑和新的檔名,然後它會遍歷資料夾中的檔案,為每個檔案生成一個新的名稱,新名稱由指定的檔名加上一個序號組成。
當您需要使用 C# 程式語言來遍歷指定資料夾並刪除指定副檔名的檔案時,這篇教學將引導您完成這個任務。這個程式將使用遞迴方法,以確保不僅刪除指定資料夾中的檔案,還將刪除其所有子資料夾中符合條件的檔案。
在 C# 的視窗應用程式開發中,有時候我們需要在子視窗中取得父視窗的參考,以實現不同視窗之間的資訊交換或操作。這篇教學將會示範如何使用 Owner 屬性來在子視窗中取得父視窗的參考,以及如何進行相關操作。
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。
在C#的視窗應用程式中,右鍵選單(Context Menu)是一個方便的使用者介面元素。當中的項目可以包含各種功能,而有時我們可能需要在使用者點擊右鍵選單中的某個項目時,取得該項目的值。以下是一個簡單的教學,教你如何在C#中實現這個功能。
當我們需要在C#中批次更改資料夾中的檔案名稱時,我們可以使用一個自定義的C#類別。這個類別會讓我們指定資料夾路徑和新的檔名,然後它會遍歷資料夾中的檔案,為每個檔案生成一個新的名稱,新名稱由指定的檔名加上一個序號組成。
當您需要使用 C# 程式語言來遍歷指定資料夾並刪除指定副檔名的檔案時,這篇教學將引導您完成這個任務。這個程式將使用遞迴方法,以確保不僅刪除指定資料夾中的檔案,還將刪除其所有子資料夾中符合條件的檔案。
在 C# 的視窗應用程式開發中,有時候我們需要在子視窗中取得父視窗的參考,以實現不同視窗之間的資訊交換或操作。這篇教學將會示範如何使用 Owner 屬性來在子視窗中取得父視窗的參考,以及如何進行相關操作。
在這篇教學中,我們將會學習如何使用 C# 語言再設定的時間動作,模擬批次自動化功能。使用 System.Windows.Forms.Timer 來達到這個目的。同時,我們也將會示範如何取得目前時間的不同屬性,像是年份、日期、分鐘等。
在程式設計中,錯誤處理是一個不可或缺的部分。C#提供了強大的錯誤處理機制,讓我們能夠更有效地管理和處理程式執行中可能出現的問題。本篇文章將帶你深入了解如何在C#中捕捉與處理錯誤,確保你的程式在遇到問題時能夠優雅地回應。
你可能也想看
Google News 追蹤
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
C# Dictionary – (C#教學) – Dictionary 就是包含keys list 及 value list 的一個集合. 在集合中, 每一行的key也會Map在value上, 只需要加入Key就可取得值. 相關頁面:
Thumbnail
C# List – (C#教學) – 所謂List, 就是把多個同類的variable串列在一起. 加上for, foreach迴圈的使用, 令他們可以作出相同的行為. 相關頁面: C# 陣列 – 學會Array陣列基本5種應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
Thumbnail
2004年聖彼得堡一家電影院的影廳裡頭擠滿了等著《The Lord of the Rings: The Two Towers 魔戒二部曲:雙城奇謀》放映的俄羅斯觀眾。這個場次的不尋常之處除了票價是平常電影票的好幾倍之外,銀幕上的電影似乎不盡然是我們看過《魔戒二部曲:雙城奇謀》......
離開的人3號的感受
Thumbnail
只要你肯聯繫我,我就願意再勇敢一次, 重道覆轍也沒關係, 就算你是陷阱、是無底深淵、是深不見底的大海, 只要是你,我願意跳下去, 願意沈溺於一片以你為名的深海。 我站在風口,整個世界都是你的氣息。 我將滿懷愛意的等待下個盛夏的風, 和遠方的你。 你知道 C-14 的半衰期有多久嗎? 它不及我在冥冥之
string SrcStr = "admin"; string[] UserNameCvt = SrcStr.Split(','); Roles.AddUsersToRole(UserNameCvt, "Administrator"); 註記: 網路上較少此種例子,多為string[] to S
Thumbnail
可能包含敏感內容
如果你有關注台灣媒體,就會知道安心亞是全台首位公開穿C字褲的女藝人,那時才2009年,跟現在相比之下算是民風更為保守的年代,一方面真的很佩服她的勇氣,另一方面又會覺得:穿C字褲有什麼好處呢?其實C字褲並不是大眾印象中跟情色畫上等號的東西,反而像是丁字褲的升級版而已,都能拿來做隱藏痕跡使用。希望這篇文
Thumbnail
C世代(Connected Generation, 連接世代)是美容保養品-網購的主力──了解他們的特質,才能讓保養品網路行銷大賣... 隨著智慧裝置普及,全球「網路購物」市場高速增長(根據eMarketer統計:全球零售電子商務銷售額,2017年為1.357萬億美元,預估至2021年將達3.554
Thumbnail
這個秋,Chill 嗨嗨!穿搭美美去賞楓,裝備款款去露營⋯⋯你的秋天怎麼過?秋日 To Do List 等你分享! 秋季全站徵文,我們準備了五個創作主題,參賽還有機會獲得「火烤兩用鍋」,一起來看看如何參加吧~
Thumbnail
11/20日NVDA即將公布最新一期的財報, 今天Sell Side的分析師, 開始調高目標價, 市場的股價也開始反應, 未來一週NVDA將重新回到美股市場的焦點, 今天我們要分析NVDA Sell Side怎麼看待這次NVDA的財報預測, 以及實際上Buy Side的倉位及操作, 從
Thumbnail
Hi 大家好,我是Ethan😊 相近大家都知道保濕是皮膚保養中最基本,也是最重要的一步。無論是在畫室裡長時間對著畫布,還是在旅途中面對各種氣候變化,保持皮膚的水分平衡對我來說至關重要。保濕化妝水不僅能迅速為皮膚補水,還能提升後續保養品的吸收效率。 曾經,我的保養程序簡單到只包括清潔和隨意上乳液
Thumbnail
C# Dictionary – (C#教學) – Dictionary 就是包含keys list 及 value list 的一個集合. 在集合中, 每一行的key也會Map在value上, 只需要加入Key就可取得值. 相關頁面:
Thumbnail
C# List – (C#教學) – 所謂List, 就是把多個同類的variable串列在一起. 加上for, foreach迴圈的使用, 令他們可以作出相同的行為. 相關頁面: C# 陣列 – 學會Array陣列基本5種應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
C# 陣列 – (C#教學) – Array為程式設計中最基本元素之一. 陣列就是用一個variable記下多個同類的值(記憶體中的位置), 以供日後所調用. 相關頁面: C# List – 學會List的5種基本應用方法 – 初始化, 加入值, 更新值, 刪除值, foreach迴圈
Thumbnail
auto(自動)、register(暫存器)、static(靜態)、extern(外部),以作用範圍(scope)、存儲時期(life time)、連結(linkage)的不同作為區別。
Thumbnail
2004年聖彼得堡一家電影院的影廳裡頭擠滿了等著《The Lord of the Rings: The Two Towers 魔戒二部曲:雙城奇謀》放映的俄羅斯觀眾。這個場次的不尋常之處除了票價是平常電影票的好幾倍之外,銀幕上的電影似乎不盡然是我們看過《魔戒二部曲:雙城奇謀》......
離開的人3號的感受
Thumbnail
只要你肯聯繫我,我就願意再勇敢一次, 重道覆轍也沒關係, 就算你是陷阱、是無底深淵、是深不見底的大海, 只要是你,我願意跳下去, 願意沈溺於一片以你為名的深海。 我站在風口,整個世界都是你的氣息。 我將滿懷愛意的等待下個盛夏的風, 和遠方的你。 你知道 C-14 的半衰期有多久嗎? 它不及我在冥冥之
string SrcStr = "admin"; string[] UserNameCvt = SrcStr.Split(','); Roles.AddUsersToRole(UserNameCvt, "Administrator"); 註記: 網路上較少此種例子,多為string[] to S
Thumbnail
可能包含敏感內容
如果你有關注台灣媒體,就會知道安心亞是全台首位公開穿C字褲的女藝人,那時才2009年,跟現在相比之下算是民風更為保守的年代,一方面真的很佩服她的勇氣,另一方面又會覺得:穿C字褲有什麼好處呢?其實C字褲並不是大眾印象中跟情色畫上等號的東西,反而像是丁字褲的升級版而已,都能拿來做隱藏痕跡使用。希望這篇文
Thumbnail
C世代(Connected Generation, 連接世代)是美容保養品-網購的主力──了解他們的特質,才能讓保養品網路行銷大賣... 隨著智慧裝置普及,全球「網路購物」市場高速增長(根據eMarketer統計:全球零售電子商務銷售額,2017年為1.357萬億美元,預估至2021年將達3.554