问题描述
尽管我多年来一直使用 C#(Windows 窗体),但我还是有头脑失败的时刻,我一生都无法弄清楚如何捕捉用户在文本框中输入 Ctrl + C.
Despite me working with C# (Windows Forms) for years, I'm having a brain fail moment, and can't for the life of me figure out how to catch a user typing Ctrl + C into a textbox.
我的应用程序基本上是一个终端应用程序,我希望 Ctrl + C 发送一个 (byte)3
到串口,而不是复制到剪贴板的快捷方式.
My application is basically a terminal application, and I want Ctrl + C to send a (byte)3
to a serial port, rather than be the shortcut for Copy to Clipboard.
我已在文本框上将快捷方式 enabled
属性设置为 false.然而,当用户点击 Ctrl + C 时,keypress 事件不会触发.
I've set the shortcuts enabled
property to false on the textbox. Yet when the user hits Ctrl + C, the keypress event doesn't fire.
如果我捕捉到 keydown,则当用户按下 Ctrl 时(即在他们按下 C 键之前)触发该事件.
If I catch keydown, the event fires when the user presses Ctrl (that is, before they hit the C key).
这可能是我想念的简单得愚蠢的东西.
It's probably something stupidly simple that I'm missing.
推荐答案
继续使用 KeyDown 事件,但在该事件中检查 both Ctrl 和 C,像这样:
Go ahead and use the KeyDown event, but in that event check for both Ctrl and C, like so:
if (e.Control && e.KeyCode == Keys.C) {
//...
e.SuppressKeyPress = true;
}
此外,为防止底层 TextBox 处理击键,请将 SuppressKeyPress 属性设置为 true,如图所示.
Also, to prevent processing the keystroke by the underlying TextBox, set the SuppressKeyPress property to true as shown.
这篇关于在文本框中捕获 Ctrl + C的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!