1

我想让 ^N 与树控件中的向下箭头一样工作。我想我只需要将以下内容添加到 KeyDown 处理程序中:

SendKeys.Send("{Down}");

但这被视为 Control-Down 箭头,因为当前按下了控制键。msdn 页面描述了 如何打开控制修饰符,但没有描述如何关闭它。

谢谢,基思

4

4 回答 4

5

很抱歉来晚了,但我想我找到了解决办法:

首先,导入 SetKeyboardState:

[DllImport("user32.dll")]
public static extern bool SetKeyboardState(byte[] lpKeyState);

然后,只需在调用 SendKeys.Send() 之前用一个零字节数组调用它:

SetKeyboardState(new byte[256]);
SendKeys.Send("your key sequence");

这对我有用。希望这可以帮助!

于 2009-05-21T10:02:10.597 回答
1

您可以 p/invoke 到 keybd_event。这将让您模拟处于“向上”和“向下”状态的键。

于 2009-03-26T07:15:09.617 回答
0

这是做这件事的艰难方法。我承认这不是最好的方法。我相信你已经知道了。您可能希望重载控件的 WindProc 方法并使用 SendMsg Win32 Api。这就是我过去让事情恢复正常的方式。

于 2009-03-05T18:50:33.443 回答
0

您也可以尝试等到不再按下控制键,然后才KeySend,例如:

while (System.Windows.Input.Keyboard.IsKeyDown(Key.LeftCtrl))
{
    // lets try again after a while
    System.Threading.Thread.Sleep(250);
}
SendKeys.Send("{Down}");
于 2020-09-13T19:51:30.730 回答