0

我在一个系统上工作,其中大多数数据收集表单都是从基本表单派生的。每个表单都有一个 AcceptButton 集,因此当按下 Enter 键时,它会引发 AcceptButton 的事件。我希望能够向用户显示警告,询问他们是否确定在按 Enter 后要保存。如果他们选择“是”,则将引发 AcceptButton 事件,如果他们选择“否”,则不会发生任何事情。这可以从基类中做到吗?如果按下回车,我已经尝试在 ProcessCmdKey 方法的基类中将 AcceptButton 设置为空,但我不知道如何再次重置它。

4

1 回答 1

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

这将在按下 enter 时提示用户,如果他们以 No 响应,则True返回,表示该键已被处理,不会进行进一步处理。这将防止Button.Click事件引发。

于 2013-01-16T23:44:16.810 回答