2013-01-16 89 views
0

我工作的系統中大多數數據收集表單都是從基本表單派生的。 每個表單都有一個AcceptButton集合,這樣當按下Enter鍵時,會引發AcceptButton的事件。 我希望能夠向用戶顯示警告,詢問他們是否確定在按下回車鍵後要保存。如果他們選擇'是',那麼AcceptButton事件將被引發,如果他們選擇'否',則不會發生任何事情。 這是可能從基類做到的嗎? 如果輸入被按下,我試着在ProcessCmdKey方法的基類中設置AcceptButton爲空,但我不知道如何重新設置它。按下Enter鍵時在派生表單上防止AcceptButton事件

回答

1

我認爲你在正確的軌道上覆蓋ProcessCmdKey方法,但爲什麼設置AcceptButton爲空?像這樣的實現應該足夠

Protected Overrides Function ProcessCmdKey(ByRef msg As System.Windows.Forms.Message, keyData As System.Windows.Forms.Keys) As Boolean 

    If (keyData = Keys.Enter) Then 
     If (MessageBox.Show("Do you want to save?", "", MessageBoxButtons.YesNo) = Windows.Forms.DialogResult.No) Then 
     Return True 'Eat the key press. 
     End If 
    End If 

    Return MyBase.ProcessCmdKey(msg, keyData) 

End Function 

按下此鍵時,輸入會提示用戶,如果他們有沒有響應,則True返回,指示鍵已被處理,並沒有進一步的處理會發生。這將阻止Button.Click事件發生。

+0

謝謝,這正是我一直在尋找的。 – GarethV

相關問題