首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

怎样在DateTimePicker的keypress事件中,回车实现年月日焦点转换,该如何解决

2012-01-05 
怎样在DateTimePicker的keypress事件中,回车实现年月日焦点转换DateTimePicker得到焦点后,焦点落在年份上。

怎样在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);
}

热点排行