【发布时间】:2014-05-15 21:06:29
【问题描述】:
我正在开发 WPF 应用程序。在它的基于文件的 I/O 函数中,我正在捕获另一个进程使用文件时引发的异常。在这种情况下,应该出现一个带有重试/取消选项的消息框。据我所知,WPF(Windows.MessageBox)中没有这样的消息框,所以我尝试使用 Windows.Forms.Messagebox,但它的行为很奇怪:
当我调用一次时(仅使用 OK-Button-Option 进行测试)...
System.Windows.Forms.MessageBox.Show("blablabla", "Test", System.Windows.Forms.MessageBoxButtons.OK);
...它出现一毫秒,然后消失。
当我调用它两次时...
System.Windows.Forms.MessageBox.Show("blablabla", "Test", System.Windows.Forms.MessageBoxButtons.OK);
System.Windows.Forms.MessageBox.Show("blablabla", "Test", System.Windows.Forms.MessageBoxButtons.OK);
...第二个消息框按预期保持可见,直到您单击“确定”。
我已经尝试使用“null”作为 IWin32Window 的参数,但没有效果。我还尝试将 WPF-Mainwindow 作为参数传递,但(当然)它是错误的类型。
有什么建议吗?
【问题讨论】:
-
有 WPF 等效于
MessageBox。见:stackoverflow.com/questions/3830228/… -
使用 WPF 消息框代替 windows 窗体消息窗体。
-
我知道 System.Windows.Messagebox,但它缺少我打算使用的重试/取消按钮。
-
因为改写消息以适应“是/否”消息框似乎需要“大量”“工作”,您可以尝试设计自己的自定义消息框,您知道自己想要这样做。
-
@MC 不,我不知道 - 这就是为什么我不写只是 some 答案我闭嘴。提出替代方案很好 - 但不能作为答案。如果我问你飞往曼谷的航班多少钱?你不会回答去市中心。只是因为你不知道,对吗?
标签: c# wpf winforms messagebox