需求:
双击某个日期,需要弹出一个与该日期相应的窗口,来写日报,这时就需要日期的双击事件;
现状:
在MonthCalendar控件的属性窗口中,并没有双击DoubleClick事件,查看MonthCalendar类,确实有MonthCalendar事件,但是经过测试没有作用
必须自己手动添加类似与功能的双击事件
方案:
日期空间有MouseDown事件,就根据这个事件进行模拟:具体代码如下
public partial class DateControl : UserControl
{
int clickTime = 0;//单击次数
TimeSpan timeSpan;
DateTime startTime;
DateTime endTime;
DateTime firstTime;
public delegate void DelegateDoubleClickDate(object sender,DateTime selectDate);
public event DelegateDoubleClickDate EventDoubleClickDate;
public DateControl()
{
InitializeComponent();
this.timeSpan = new TimeSpan(0, 0, 0, 0, 500);//500为双击的间隔时间
this.startTime = this.endTime = DateTime.Now;
}
private void dateMeno_MouseDown(object sender, MouseEventArgs e)
{
if (e.Button==MouseButtons.Left)
{
this.clickTime += 1;
if (this.clickTime==1)
{
this.startTime = DateTime.Now;
this.firstTime = this.dateMeno.SelectionEnd;
}
else if(this.clickTime==2)
{
this.endTime = DateTime.Now;
TimeSpan tempSpan = this.endTime - this.startTime;
if (tempSpan<=this.timeSpan && this.firstTime==this.dateMeno.SelectionEnd)
{
if (this.EventDoubleClickDate!=null)
{
this.EventDoubleClickDate(this.dateMeno, this.dateMeno.SelectionEnd);
}
}
this.clickTime = 0;
this.startTime = this.endTime = DateTime.Now;
}
}
}
}