C# 无法处理文本框的 Ctrl+K 事件
C# Cannot handle Ctrl+K event of textbox
我想在用户按下文本框上的 Ctrl + K
时执行一些操作。
private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.K)
MessageBox.Show("!");
}
当我 运行 它时没有任何反应。
当我调试时,我可以看到 e.Control
为真(这意味着我按下了 Ctrl)但是 e.KeyCode
不等同于 K。
有什么想法吗?
在KeyDown event
中,你只需要键盘的'state'。
您可能想看看这个主题:
Capture multiple key downs in C#
真不知道是什么问题。
可以在按下 Ctrl
时立即触发事件,而无需等待 K
也被按下。
但是,当我在 TextBox_KeyUp
事件中使用相同的代码时,它工作正常。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.K) && focusedTextbox == subject_TextBox)
{
//Some Code
}
}
private TextBox focusedTextbox = null;
private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
{
MethodName(e.KeyCode)
}
private void MethodName(Keys keys)
{
focusedTextbox = (TextBox)sender;
}
使用这段代码,这应该可以工作我自己测试过它会工作,你会想要 运行 每个文本框中的 'MethodName' 方法,或者如果你能找到更好的方法更改 'focusedTextBox' 字段然后这样做希望这有所帮助。
我想在用户按下文本框上的 Ctrl + K
时执行一些操作。
private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
{
if (e.Control && e.KeyCode == Keys.K)
MessageBox.Show("!");
}
当我 运行 它时没有任何反应。
当我调试时,我可以看到 e.Control
为真(这意味着我按下了 Ctrl)但是 e.KeyCode
不等同于 K。
有什么想法吗?
在KeyDown event
中,你只需要键盘的'state'。
您可能想看看这个主题:
Capture multiple key downs in C#
真不知道是什么问题。
可以在按下 Ctrl
时立即触发事件,而无需等待 K
也被按下。
但是,当我在 TextBox_KeyUp
事件中使用相同的代码时,它工作正常。
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == (Keys.Control | Keys.K) && focusedTextbox == subject_TextBox)
{
//Some Code
}
}
private TextBox focusedTextbox = null;
private void subject_TextBox_KeyDown(object sender, KeyEventArgs e)
{
MethodName(e.KeyCode)
}
private void MethodName(Keys keys)
{
focusedTextbox = (TextBox)sender;
}
使用这段代码,这应该可以工作我自己测试过它会工作,你会想要 运行 每个文本框中的 'MethodName' 方法,或者如果你能找到更好的方法更改 'focusedTextBox' 字段然后这样做希望这有所帮助。