C#学习教程:在C#中检测多个同时按键分享


在C#中检测多个同时按键

我希望通过检测某些无法输出的键组合(转义序列)的按键来模拟C#中的串行通信的超级终端function,例如Ctrl + C,Ctrl + Z等。我知道这些键有它们的ASCII等价物并且可以如此传输。 但是我遇到了检测多个按键的问题。 我的一些代码是作为参考提供的:

private void Transmitted_KeyDown(object sender, KeyEventArgs e) { if (e.Modifiers == Keys.Control || e.Modifiers== Keys.Shift || e.Modifiers==Keys.Alt) { var test = (char)e.KeyValue; // Only able to detect a single keypress! ComPort.Write(test.ToString()); } } 

如果您正在寻找常规密钥,则可以将它们存储在列表中:在KeyDown上,将密钥添加到列表中。 在Key Up上,将其从列表中删除。 在KeyDown上,检查列表中的内容。

但是,我不确定是否存在ctrl,shift,alt等修饰键的keydown / keyup事件。 对于那些你可以做这样的事情:

 bool CtrlDown = ((e.Modifiers & Keys.Control) > 0); bool CtrlOnlyModifierDown = ((e.ModifierKeys & Keys.Control) == Keys.Control) 

e.KeyCode包含键值+修饰符信息

 e.KeyCode = e.KeyValue | e.Modifiers 

使用e.KeyCode

不确定你是否有运气。

但试试这段代码:

上述就是C#学习教程:在C#中检测多个同时按键分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—猴子技术宅(www.ssfiction.com)

  switch (e.KeyData) { case Keys.Control: { if (e.KeyData == Keys.Subtract) { } else if (e.KeyData == Keys.C) { } break; } } 

本文来自网络收集,不代表猴子技术宅立场,如涉及侵权请点击右边联系管理员删除。

如若转载,请注明出处:https://www.ssfiction.com/ckf/1031565.html

发表评论

邮箱地址不会被公开。 必填项已用*标注