我正在使用winforms應用程序。我正在處理的表單繼承基礎表單。在基本形式中,AcceptButton
屬性設置爲cmdOK
(基本上是保存和退出按鈕)。這是必需的行爲。覆蓋繼承的Windows窗體上的AcceptButton設置
但是,我正在處理的表單有一些dropdownlist,雖然焦點在他們身上,但我需要更改回車鍵的行爲。
例如,如果重點是cboTags
和輸入是按我需要調用cmdAddTag_Click
,如果轉變 + 輸入是按我需要調用cmdRemoveTag_Click
。我加入以下代碼:
private void cboTags_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter && e.Modifiers == Keys.Shift)
{
cmdRemoveTag_Click(new object(), new EventArgs());
}
else if (e.KeyCode == Keys.Enter)
{
cmdAddTag_Click(new object(), new EventArgs());
}
}
當我測試了一下,發現窗口關閉我意識到AcceptButton
財產被設定的繼承形式。我無法找到它。
編輯
如果焦點是其他地方窗體上的行爲應該保持原樣。只有當重點是某些控件時,我需要更改Enter鍵的行爲。
您可以將繼承形式的'AcceptButton'屬性單獨更改爲(更正我)'null'或繼承形式的新按鈕。 – Sinatr 2015-03-03 13:09:54
@Sinatr無論焦點在哪裏,這個形式都會改變。正如我在問題中所說的,如果重點在某些控制上,我只想改變它。我已經添加了一個編輯,使其更清晰。 – Fred 2015-03-03 13:19:26
您已經回答了您的問題:*如果焦點位於某些控件上,則只想更改它。* - 處理焦點事件以啓用/禁用想要的行爲。例如。設置'AcceptButton = null'時,*某些控件*獲得焦點,否則重置(即手動控制行爲)。我不知道更簡單的方法。可能如果你想以基本形式處理'Enter'鍵事件並提供一些方法/屬性來啓用/禁用它,那麼它會更容易。 – Sinatr 2015-03-03 13:24:21