簡體   English   中英

處理Control +在C#中輸入多行文本框

[英]handle Control + enter in a multiline textbox in c#

我正在嘗試在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鍵的按位或。

編輯:

如果要防止在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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM