DatetimePicker 作为vs自带控件,它的功能还是挺好的,为我们提供了很大的方便。但是,用这个控件时,如果为了操作上方便会出现一些小问题,比如:如何判断当前选中的是年还是月、日。对于这个问题可以用一些笨方法解决。
实现功能: DatetimePicker 显示为 年/月/日, 按Enter键自动跳转,到日后 焦点移动到其他控件
对于Enter键实现年月日间的切换大家很容易想到,那就是用控件自带的功能: 当按下 left,right 键时左右切换。
if(e.KeyChar==13)
{
SendKeys.Send("{right}");
}
这样就可以实现年月日的切换。
下面是实现到“日”(最后的内容)后,将焦点转移到其他控件
方法也类似。首先,用控件自带的功能: 当按下 up,down 键时值的变化,这样在ValueChange事件中判断变化的是哪一部分,如果是日在改变,焦点转移。
具体一看代码便明白:
if(e.KeyChar==13)
{
SendKeys.Send("{right}");
SendKeys.Send("{up}");//
SendKeys.Send("{down}");//来回切换不会改变原值,由它触发ValueChange事件
if(IsDayChange)
{
IsDayChange=false;
SendKeys.Send("{tab}");
}
}
private void dateTimePicker1_ValueChanged(object sender, System.EventArgs e)
{
if(dateTimePicker1.Value.Day != CurrentDay)
{
IsDayChange=true;
}
CurrentDay= dateTimePicker1.Value.Day;
}
这样就OK了。CurrentDay,IsDayChange是两个全局变量。 还有一些问题,那就根据情况,自己对应了。
转自:http://blog.csdn.net/df398286232/archive/2009/05/07/4158150.aspx