模态对话框窗口中没有显示消息框

3
我试图在模态对话框窗口中出现错误时显示一个消息框,但由于某种原因,尽管我知道已经触发了MessageBox.Show方法,但从未显示消息框。try catch块位于用作模态对话框显示的Windows表单的事件处理程序内。我知道该事件已被触发并且错误已被捕获,但是消息框从未打开。我已将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 分支。

2
消息框出现在对话框下面的情况是否可能? - Mark Ransom
虽然那似乎是合乎逻辑的答案,但我不这么认为。我已经将对话框移动到屏幕的各个位置,但仍然没有看到MessageBox。它在任务栏中也不显示为窗口。 - TKTS
1个回答

0

检查主线程是否被阻塞在执行其他任务。然后调用将会被阻塞在 Me.Invoke(New _showMessage(AddressOf ShowMessage), message),你将看不到消息框。

如果在 MessageBox.Show(message, "ERROR") 处设置断点会发生什么?


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接