handle Control+在c#中的多行文本框中输入
本文关键字:文本 输入 Control+ handle | 更新日期: 2023-09-27 18:20:22
我正试图在我的winapp项目中处理Ctrl+Enter键按下事件。
private void txtAnswer_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode==Keys.Enter && e.KeyCode==Keys.Control)
{
//Some statements.
}
}
但是,它不起作用。有什么帮助吗?
如果要检测键和修饰符,则测试e.KeyData
,而不是e.KeyCode
。在这种情况下:
if (e.KeyData == (Keys.Control | Keys.Enter))
注意,这是Control
修饰符密钥和Enter
密钥的逐位OR。
编辑:
如果重点是防止在Ctrl+Enter上添加换行符,那么您应该这样做:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
e.SuppressKeyPress = (e.KeyData == (Keys.Control | Keys.Enter));
}
它应该是Control.ModifierKeys
,如下所示: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");
}
}
编辑:防止换行:
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;
}
}