我有一个使用 MessageBox.Show 显示 MessageBox 的表单,并尝试从 MessageBox 上的“帮助”按钮接收事件,以便我可以执行我自己的代码。 Microsoft 文档显示了如何执行此操作;但是,使用建议的方法不起作用。这是我的代码的缩短版本:

    Private Function MethodName() As Boolean

      AddHandler Me.HelpRequested, AddressOf Me.MsgBoxHelpRequested
      Select Case MessageBox.Show("Text", "Title", MessageButtons.YesNoCancel, MessageBoxIcon.Question, MessageBoxDefaultButton.Button2, 0, True)
        Case MsgBoxResult.Yes
          ' Do stuff
        Case MsgBoxResult.No
          ' Do stuff
        Case MsgBoxResult.Cancel
          RemoveHandler Me.HelpRequested, AddressOf Me.MsgBoxHelpRequested
          Return False
      End Select
      RemoveHandler Me.HelpRequested, AddressOf Me.MsgBoxHelpRequested

    End Function

Private Sub MsgBoxHelpRequested(ByVal sender As Object, ByVal hlpevent As System.Windows.Forms.HelpEventArgs)
  ' Breakpoint that never gets hit
  ' More code
End Sub

我一直在寻找这个问题的解决方案,但我找到的最好的问题是这个问题:How to detect Help button press in Windows Forms MessageBox? 将我引回到似乎不起作用的相同 Microsoft 代码。

有人可以帮我解决这个问题吗?

谢谢你。

最佳答案

Me 作为第一个参数传递给 MessageBox.Show

将处理程序添加到 Form.ActiveForm 而不是 Me

关于vb.net - MessageBox.Show 未引发 HelpRequested 事件,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2822805/

10-13 08:08