C#中实现键盘控制DateTimePicker日历控件下拉

在很多地方, 我们都会用到DateTimePicker日历控件, 而这个控件的下拉只能通过点击下拉按钮触发. 这就使得我们在需要全键盘操作的时候很尴尬. DateTimePicker的下拉不像ComboBox一样, 可以设置DropDown属性来控制. 因此我们只能通过发送系统消息来控制.
  1. [System.Runtime.InteropServices.DllImport("user32.dll")]   
  2.   
  3. static extern long SendMessage(IntPtr hWnd, uint Msg, uint wParam, long lParam);   
  4.   
  5. const int WM_SYSKEYDOWN 0x0104, VK_DOWN 0x28;   
  6.   
  7.   
  8.   
  9. //在键盘事件中加入这些代码   
  10.   
  11. if (e.KeyCode == Keys.Space)   
  12.   
  13. {   
  14.   
  15.     SendMessage(DateTimePicker1.Handle, WM_SYSKEYDOWN, VK_DOWN, 0);   
  16.   
  17.     //DateTimePicker1 为DateTimePicker的一个实例.   
  18.   
  19.  
[System.Runtime.InteropServices.DllImport("user32.dll")] static extern long SendMessage(IntPtr hWnd, uint Msg, uint wParam, long lParam); const int WM_SYSKEYDOWN = 0x0104, VK_DOWN = 0x28; //在键盘事件中加入这些代码 if (e.KeyCode == Keys.Space) { SendMessage(DateTimePicker1.Handle, WM_SYSKEYDOWN, VK_DOWN, 0); //DateTimePicker1 为DateTimePicker的一个实例. }

其实,这个消息就是模拟了Alt+Down键,使得键入空格键就可以实现自动的下拉。

posted @ 2009-08-18 15:14  oraclejava  阅读(1637)  评论(0)    收藏  举报