日期:2014-05-18  浏览次数:21012 次

怎样在DateTimePicker的keypress事件中,回车实现年月日焦点转换
DateTimePicker得到焦点后,焦点落在年份上。要求按回车后,实现年-> 月-> 日-> 下一个控件   的依次焦点转换。请问keypress事件该怎么写?先谢了!

------解决方案--------------------
您需要首先从DateTimePicker继承得到一个类MyDateTimePicker,然后再Override MyDateTimePicker的ProcessCmdKey方法,在Form上使用MyDateTimePicker。以下提供简单的示例代码:
class MyDateTimePicker : System.Windows.Forms.DateTimePicker
{
protected override bool IsInputKey(System.Windows.Forms.Keys keyData)
{

return base.IsInputKey(keyData);
}

protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Enter)
{

SendKeys.Send( "{RIGHT} ");
return true;
}
else
{
return base.ProcessCmdKey(ref msg, keyData);
}
}
}


------解决方案--------------------
private void dateTimePicker1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
SendKeys.Send( "{RIGHT} ");
}

这样可以,已经测试了
------解决方案--------------------
在窗口或DateTimePicker的父控件中添加如下的基类方法的重写:

protected override bool ProcessKeyPreview(ref Message m)
{
if (this.ActiveControl is DateTimePicker && m.Msg == 0x100 && (int)m.WParam == 13)
{
m.WParam = (IntPtr)0x27;
}
return base.ProcessKeyPreview(ref m);
}