当用户在文本框上按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.
有什么想法吗?
答案 0 :(得分:1)
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'每个文本框中的方法,或者如果您可以找到更好的方法来更改“focusTextBox”。然后,希望这有帮助。
答案 1 :(得分:0)
答案 2 :(得分:0)
真的不知道问题的原因是什么
可以在按下Ctrl
后立即触发事件,而不必等待K
被按下。
但是,当我在TextBox_KeyUp
事件中使用相同的代码时,它可以正常工作。