您的位置:首页 > 其它

DateTimePicker 获取当前输入位置(年、月、日、时、分、秒) 转移焦点

2009-05-07 16:26 344 查看
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是两个全局变量。 还有一些问题,那就根据情况,自己对应了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: