我想知道爲什麼我的ProcessCmdKey觸發兩次,當我按下按鈕。這裏是我的代碼:ProcessCmdKey觸發兩次,WinForms
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
if (keyData == Keys.Escape)
{
if (this.tsComboBoxFontChoice.Focused)
{
this.tsComboBoxFontChoice.Text = this.startFontComboBoxText;
this.richTextBox.Focus();
this.tsComboBoxFontChoice.Focus();
this.isEscClicked = true;
return true;
}
else if (this.tsComboBoxFontSizeChoice.Focused)
{
this.tsComboBoxFontSizeChoice.Text = this.startFontSizeComboBoxText;
this.tsComboBoxFontSizeChoice.Focus();
return true;
}
}
return base.ProcessCmdKey(ref msg, keyData);
}
我也爲我的表單定義了KeyDown事件,可能是它的原因嗎?
還有一個:如果我想定義RichTextBox的KeyDown/KeyUp/KeyPressed事件,它不會與ProcessCmdKey發生衝突嗎?我從來沒有重寫默認的方法,但這次我被迫。
太好了,謝謝!我只是覺得這是錯的。你知道是否有可能阻止這種淨效應?我的意思是如果我只想爲Focused控件觸發ProcessCmdKey事件,而不是將它傳遞給父項(您猜對的是表單)? –
我認爲你只是想使用恰當的關鍵事件 – sab669
雖然它們都在同一個組面板上,但對於TextBox雖然工作良好,但它正在被ComboBox調用兩次。任何想法如何解決它? – bjan