Reputation: 7291
I am trying to handle Ctrl+Enter keydown event in my winapp project.
private void txtAnswer_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.Enter && e.KeyCode==Keys.Control)
{
//Some statements.
}
}
But, it's not working. Any help?
Upvotes: 1
Views: 3266
Reputation: 54417
If you want to detect a key and modifiers then you test e.KeyData
, not e.KeyCode
. In this case:
if (e.KeyData == (Keys.Control | Keys.Enter))
Note that that is a bitwise OR of the Control
modifier key and the Enter
key.
EDIT:
If the point is to prevent a line break being added on Ctrl+Enter then this is what you should do:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = (e.KeyData == (Keys.Control | Keys.Enter));
}
Upvotes: 7
Reputation: 17193
It should be Control.ModifierKeys
as below: Ctrl + Enter
private void txtAnswer_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && Control.ModifierKeys == Keys.Control)
{
e.Handled = false;
MessageBox.Show("Ok KeyDown");
}
}
EDIT: To prevent the newline:
private bool keydowncalled = false;
private void txtAnswer_KeyDown(object sender, KeyEventArgs e)
{
keydowncalled = false;
if (e.KeyData == (Keys.Control | Keys.Enter))
{
keydowncalled = true;
MessageBox.Show("Ok KeyDown");
}
}
private void txtAnswer_KeyPress(object sender, KeyPressEventArgs e)
{
if (keydowncalled == true)
{
// Stop the newline from being entered into the control.
e.Handled = true;
}
}
Upvotes: 2