我试图在模态对话框窗口中出现错误时显示一个消息框,但由于某种原因,尽管我知道已经触发了MessageBox.Show方法,但从未显示消息框。try catch块位于用作模态对话框显示的Windows表单的事件处理程序内。我知道该事件已被触发并且错误已被捕获,但是消息框从未打开。我已将MessageBox.Show替换为另一个表单显示,它可以正常工作,但我宁愿使用MessageBox而不是创建自己的错误表单。我只是似乎无法使MessageBox起作用。这是MessageBox的限制吗?
以下是我正在做的简化版本:
*侧记:在这种情况下,我不需要 ShowMessage 中的 InvokeRequired 部分,但为了完整性,我将其保留(以防某种方式导致问题)。在其他情况下,当它从后台线程调用时,我会把它放在那里。在这个特定的实例中,在调试时,它会经过 Else 分支。
以下是我正在做的简化版本:
Private Sub OnSomeEvent(ByVal args As MyEventArgs)
Try
'some processing
Catch ex As Exception
ShowMessage("An error has occurred")
End Try
End Sub
Private Delegate Sub _showMessage(ByVal message As String)
Private Sub ShowMessage(ByVal message As String)
If Me.InvokeRequired Then
Me.Invoke(New _showMessage(AddressOf ShowMessage), message)
Else
MessageBox.Show(message, "ERROR")
'also tried MessageBox.Show(Me, message) but no luck
End If
End Sub
*侧记:在这种情况下,我不需要 ShowMessage 中的 InvokeRequired 部分,但为了完整性,我将其保留(以防某种方式导致问题)。在其他情况下,当它从后台线程调用时,我会把它放在那里。在这个特定的实例中,在调试时,它会经过 Else 分支。