我想让^ N的工作与树形控件中的向下箭头相同。我想 我只需要将以下内容添加到KeyDown处理程序中:
SendKeys.Send("{Down}");
但是自控制键以来,它被视为控制向下箭头 目前正在按下。 msdn page {{3}} 描述了如何开启 控制修饰符但不是如何将其关闭。
谢谢, 基思
答案 0 :(得分:4)
很抱歉来参加聚会,但我认为我找到了解决方案:
首先,导入SetKeyboardState:
[DllImport("user32.dll")]
public static extern bool SetKeyboardState(byte[] lpKeyState);
然后,在调用SendKeys.Send()之前,只需用零字节数组调用它:
SetKeyboardState(new byte[256]);
SendKeys.Send("your key sequence");
这对我有用。希望这有帮助!
答案 1 :(得分:1)
您可以p / invoke to keybd_event。这将让你模拟一个处于“向上”和“向下”状态的键。
答案 2 :(得分:0)
这是艰难的做法。我承认这不是最佳方式。我相信你已经知道了。您可能希望重载控件的WindProc方法&使用SendMsg Win32 Api。这就是我在当天使用的方法。
答案 3 :(得分:0)
您还可以尝试等到不再按下控制键,然后再按const texts = ["Your locale is #locale. You are from #country. Other name of your country is #others.",
"Your locale is #locale. You are from #country. Other name of your country is #misc."
];
const varsToChange = [{
locale: "Chinese",
country: "China",
others: {
name: "Republic of China",
}
},{
locale: "Japanese",
country: "Japan",
misc: {
name: "Empire of Japan",
}
}]
const result = texts.map(
(text, i) => text.replace(
/#(\w+)/g,
(_, tag) => typeof varsToChange[i][tag] === 'string' ? varsToChange[i][tag] : varsToChange[i][tag].name
)
);
console.log(result);
,例如:
KeySend