我试图在模式对话框窗口中发生错误时显示一个消息框但由于某种原因,虽然我知道MessageBox.Show方法正在被击中,但消息框从未显示过。 try catch块位于Windows窗体的事件处理程序内部,该窗体显示为模式对话框。我知道事件被触发并且错误被捕获但消息框永远不会打开。我用另一个表单show替换了MessageBox.Show,它工作正常,但我宁愿使用MessageBox而不是创建自己的错误表单。我似乎无法使MessageBox工作。这是MessageBox的限制吗?
以下是我正在做的简化版本:
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分支。
答案 0 :(得分:0)
检查主线程是否被阻止执行其他任务。然后,Me.Invoke(New _showMessage(AddressOf ShowMessage), message)
上的呼叫将被阻止,您将看不到MessageBox。
如果在MessageBox.Show(message, "ERROR")
处放置断点会怎样?