[英]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.