我想让 ^N 与树控件中的向下箭头一样工作。我想我只需要将以下内容添加到 KeyDown 处理程序中:
SendKeys.Send("{Down}");
但这被视为 Control-Down 箭头,因为当前按下了控制键。msdn 页面描述了 如何打开控制修饰符,但没有描述如何关闭它。
谢谢,基思
很抱歉来晚了,但我想我找到了解决办法:
首先,导入 SetKeyboardState:
[DllImport("user32.dll")]
public static extern bool SetKeyboardState(byte[] lpKeyState);
然后,只需在调用 SendKeys.Send() 之前用一个零字节数组调用它:
SetKeyboardState(new byte[256]);
SendKeys.Send("your key sequence");
这对我有用。希望这可以帮助!
您可以 p/invoke 到 keybd_event。这将让您模拟处于“向上”和“向下”状态的键。
这是做这件事的艰难方法。我承认这不是最好的方法。我相信你已经知道了。您可能希望重载控件的 WindProc 方法并使用 SendMsg Win32 Api。这就是我过去让事情恢复正常的方式。
您也可以尝试等到不再按下控制键,然后才KeySend
,例如:
while (System.Windows.Input.Keyboard.IsKeyDown(Key.LeftCtrl))
{
// lets try again after a while
System.Threading.Thread.Sleep(250);
}
SendKeys.Send("{Down}");