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.
        }
    }

但是,它不起作用。有什么帮助吗?

handle Control+在c#中的多行文本框中输入

如果要检测键和修饰符,则测试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;
    }
}