当按下enter键时,防止派生窗体上的AcceptButton事件



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

我认为你在重写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事件升高。

相关内容

  • 没有找到相关文章

最新更新