读书人

SendKeys.Send() 不稳定,该怎么处理

发布时间: 2013-11-02 19:41:10 作者: rapoo

SendKeys.Send() 不稳定
SendKeys.Send() 与 SendKeys.SendWait() 一样,靠不住。偶尔会没反应。
有没有什么替代方案?

这是重写网格中的事件,让回车跳到下一个单元格。经常出现按回车没反应的情况,有时急得想把回车键给砸了,非得关掉窗体再打开才行。
//public partial class MyGrid : DataGridView
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
//回车换Tab
if (keyData == Keys.Enter)
{
SendKeys.SendWait("{tab}");
//System.Threading.Thread.Sleep(100);
return true;
}
}

[解决办法]
//return (Enter) ??。
if (e.KeyChar == 13)
{
System.Windows.Forms.SendKeys.Send("{TAB}");
}
这样试试
[解决办法]
这样试试

protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
return base.ProcessCmdKey(ref msg, keyData == Keys.Enter ? Keys.Tab : keyData);
}

[解决办法]
protected override bool ProcessCmdKey(ref System.Windows.Forms.Message msg, System.Windows.Forms.Keys keyData)
{
//回车换Tab
if (keyData == Keys.Enter)
{
.....
}
else
base.ProcessCmdKey(.....);



[解决办法]
不但不稳定,不同的操作系统还不执行呢
[解决办法]
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
base.ProcessCmdKey(ref msg, keyData);
int WM_KEYDOWN = 256;
int WM_SYSKEYDOWN = 260;
bool _disable = false;
if (msg.Msg == WM_KEYDOWN
[解决办法]
msg.Msg == WM_SYSKEYDOWN)
{
switch (keyData)
{
//重载回车键
case Keys.Enter:
SendKeys.Send("{Tab}");
_disable = true;
break;
}
}
return _disable;
}
[解决办法]
。。

读书人网 >C#

热点推荐