我正在寫一個Winform應用程序,並且在某個時刻我想提示用戶從日曆中選擇一個日期。所以在瀏覽Google之後,我想我可以使用MonthCalendar控件來實現這一點。現在這裏是我有:提示用戶使用MonthCalendar控件選擇日期
MonthCalendar monthCalendar = new MonthCalendar();
monthCalendar.Show();
問題是,沒有任何反應,當這個代碼已達成。我做錯了什麼?
謝謝
我正在寫一個Winform應用程序,並且在某個時刻我想提示用戶從日曆中選擇一個日期。所以在瀏覽Google之後,我想我可以使用MonthCalendar控件來實現這一點。現在這裏是我有:提示用戶使用MonthCalendar控件選擇日期
MonthCalendar monthCalendar = new MonthCalendar();
monthCalendar.Show();
問題是,沒有任何反應,當這個代碼已達成。我做錯了什麼?
謝謝
這是很基本的Windows窗體處理。
A MonthCalender
是一個控件。你不能只顯示控件。控件只能在ContainerControl
上顯示。 A ContainerControl
是一種可以保存其他控件並小心顯示它們的控件。
最着名的ContainerControl之一是窗體。在Visual Studio中,我們通常使用設計器來創建表單並將控件放在上面。
根據您是否希望將特殊的MonthCalender僅放在一個特定的表單上,或者是否希望在多個表單上重複使用它,您必須決定是否將MonthCalender放置在窗體上或用戶控件上。
用戶控件的好處在於,您可以在Visual Studio中使用設計器將您的特殊MonthCalender拖放到任何形式上。
但最後,你必須把你的MonthCalender放在窗體上的某處。一旦你顯示你的表單,MonthCalender就會顯示出來。
public class MySpecialForm : Form
{
public MySpecialForm()
{
InitializeComponent();
}
}
以上是由Visual Studio設計創建的,一旦你已經添加了一個表格到您的項目:右鍵單擊Solution Explorer中的項目,然後選擇添加 - Windows窗體
在您選擇的設計師工具箱(菜單視圖工具箱),在Common Controls
下的工具箱中選擇MonthCalendar,然後單擊您希望顯示月份日曆的窗體。
這是基本的表格設計。一旦你加入你的MonthCalendar,該代碼是在InitializeComponent
創建:
private System.Windows.Forms.MonthCalendar monthCalendar1;
private void InitializeComponent()
{
this.monthCalendar1 = new System.Windows.Forms.MonthCalendar();
//
// monthCalendar1
//
this.monthCalendar1.Location = new System.Drawing.Point(266, 83);
this.monthCalendar1.Name = "monthCalendar1";
this.monthCalendar1.TabIndex = 3;
你不會經常編輯這個文件,它更容易使用設計。
一旦你有你的形式和要表現出來,比如後,用戶點擊主窗體上的一個按鈕:
private void OnMainFormButtonClicked(object sender, ...)
{
using (var mySpecialForm = new MySpecialForm()
{
// if desired set some properties of the form before showing
mySpecialForm. ...
// show the form and wait for the result:
var dlgResult = mySpecialForm.ShowDialog(this);
// process the result
if (dlgResult == ...)
{
ProcessResult(form.GetFormResult);
}
}
這樣做並不困難。下面的代碼使用一個小的Form
,其中一個MonthCalender
和一個Button
在下面顯示的設計器中創建。
這種形式是由另一個「父」的形式調用。當用戶點擊「完成」按鈕時,父表單可以通過位於FormCalender
的以下公共方法GetDT
獲取此日期。此代碼僅獲取第一個選定日期,但用戶可以選擇多個日期。如果需要,你也可以做任何錯誤檢查。希望這可以幫助。
表1:
public Form1() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
FormCalendar fc = new FormCalendar();
fc.ShowDialog();
MessageBox.Show("User Selected Date: " + fc.GetDT.ToLongDateString());
}
FormCalendar
public FormCalendar() {
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e) {
this.Close();
}
public DateTime GetDT {
get {
return monthCalendar1.SelectionStart;
}
}
MonthCalendar控件應該被添加到它的形式controlscollection。它不能單獨顯示 – Steve
這就解釋了一切。謝謝 ! – Toto
可以創建一個帶有「MonthCalender」控件的小表單,並且可以通過一個按鈕來指示何時輸入日期。然後,只需在該窗體上顯示'ShowDialog()'以提示用戶輸入日期? – JohnG