///// <summary>
///// 回车到下一行
///// </summary>
///// <param name="aKey"></param>
///// <returns></returns>
//protected override bool ProcessDialogKey(System.Windows.Forms.Keys aKey)
//{
// if (aKey == Keys.Enter)
// {
// SendKeys.Send("{TAB}");
// return true;
// }
// return base.ProcessDialogKey(aKey);
//}
/// <summary>
/// 按键处理
/// </summary>
/// <param name="msg">按键消息</param>
/// <param name="keyData">按键数据</param>
/// <returns></returns>
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
//判断:
// 按键是否为[Enter]
if (keyData == Keys.Enter)
{
//成立执行
//判断:
//活动控件不是System.Windows.Forms.TextBox或System.Windows.Forms.TextBox继承类
// 或
// 活动控件是System.Windows.Forms.TextBox或System.Windows.Forms.TextBox继承类但不接受[Enter]
//if (
// //!(ActiveControl is System.Windows.Forms.TextBox) ||
// ((System.Windows.Forms.TextBox)ActiveControl).AcceptsReturn == false
// )
{
//成立执行
//模拟按下[Tab]
SendKeys.SendWait("{Tab}");
//截停[Enter]消息
return true;
}
}
//判断
// 按键是否为[Shift+Enter]
if (keyData == (Keys.Enter | Keys.Shift))
{
//成立执行
//模拟按下[Shift+Tab]
SendKeys.SendWait("+{Tab}");
//截停[Shift+Enter]消息
return true;
}
//非按下[Enter]继续处理
return base.ProcessCmdKey(ref msg, keyData);
}
本文介绍了一种按键处理的方法,特别是如何在程序中处理Enter键和Shift+Enter键的输入,通过模拟Tab键和Shift+Tab键来实现特定的功能,如导航到下一个控件等。这种方法适用于非文本框控件或者文本框控件不接受Enter键的情况。

1407

被折叠的 条评论
为什么被折叠?



