建構子是最重要部分,因為要把 MonthCalendar 傳給 ToolStripControlHost
在 Form 內把自訂的 ToolStripMonthCalendar 塞進 MenuStrip 上使用,MenuStrip 和 ToolStripMenuItem 是直接拖曳建立上 Form 的using System;
using System.Windows.Forms;
namespace UCToolStripControlHost
{
public class ToolStripMonthCalendar : ToolStripControlHost
{
// 把 MonthCalendar 傳進 ToolStripControlHost 建構子
public ToolStripMonthCalendar() : base(new MonthCalendar())
{
}
public MonthCalendar MonthCalendarControl
{
get
{
return Control as MonthCalendar;
}
}
// 公開 FirstDayOfWeek 屬性
public Day FirstDayOfWeek
{
get
{
return MonthCalendarControl.FirstDayOfWeek;
}
set
{
MonthCalendarControl.FirstDayOfWeek = value;
}
}
// 公開 AddBoldedDate 方法
public void AddBoldedDate(DateTime dateToBold)
{
MonthCalendarControl.AddBoldedDate(dateToBold);
}
// 公開 DateChanged 事件
public event DateRangeEventHandler DateChanged
{
add { MonthCalendarControl.DateChanged += value; }
remove { MonthCalendarControl.DateChanged -= value; }
}
}
}
using System;
using System.Windows.Forms;
namespace UCToolStripControlHost
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
ToolStripMonthCalendar monthCalendar = new ToolStripMonthCalendar();
toolStripMenuItem1.DropDownItems.Add(monthCalendar);
monthCalendar.DateChanged += (sender, e) =>
{
txtStartDate.Text = e.Start.ToString();
};
}
}
}
- 參考資料
- 自訂ToolStrip的ToolStripItem - 自訂控件
- C# 自定义承载控件 - DateTimePicker
沒有留言:
張貼留言