Ris*_*vak 10 c# keyboard keyboard-shortcuts keyboard-events
如何在C#表单上捕获Ctrl+ Alt+ K+ P键?谢谢
Han*_*ant 12
这是一个和弦,如果没有记住和弦的第一次击键,就无法检测到它.这有效:
public partial class Form1 : Form {
public Form1() {
InitializeComponent();
}
private bool prefixSeen;
protected override bool ProcessCmdKey(ref Message msg, Keys keyData) {
if (prefixSeen) {
if (keyData == (Keys.Alt | Keys.Control | Keys.P)) {
MessageBox.Show("Got it!");
}
prefixSeen = false;
return true;
}
if (keyData == (Keys.Alt | Keys.Control | Keys.K)) {
prefixSeen = true;
return true;
}
return base.ProcessCmdKey(ref msg, keyData);
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定你能不能.但是,你可以做的是Visual Studio的工作方式.它有快捷方式,如Ctrl+ K, C. 首先按Ctrl+ K,然后按住Ctrl并按C.在你的情况下,你可以检查Ctrl+ Alt+ K, P.
您可以先在其他答案中检查Ctrl+ Alt+ K,然后设置成员变量/标志以指示已按下Ctrl+ Alt+ K.在您检查的相同方法中,K您可以检查P,如果您刚设置的标志设置为true,则执行您需要执行的操作.否则将标志设置为false.
粗伪代码:
private bool m_bCtrlAltKPressed = false;
public void KeyDown() {
if (Ctrl+Alt+K)
{
m_bCtrlAltKPressed = true;
}
else if (Ctrl+Alt+P && m_bCtrlAltKPressed) {
//do stuff
}
else {
m_bCtrlAltKPressed = false;
}
}
Run Code Online (Sandbox Code Playgroud)
希望足够清楚.
请参阅这篇关于在 C# 中设置热键的精彩博客文章
\n\n\n\n这里还有一篇很好的文章解释了这一切
\n\n\n