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

来源:互联网 发布:欧文17总决赛数据 编辑:程序博客网 时间:2024/05/20 10:53

      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是两个全局变量。 还有一些问题,那就根据情况,自己对应了。