【问题标题】:Prevent WinForms MessageBox.Show modal popups防止 WinForms MessageBox.Show 模式弹出窗口
【发布时间】:2016-11-11 18:41:21
【问题描述】:

有没有办法拦截MessageBox.Show(...) 调用并返回结果?

一个解决方案是定义一个抽象像

interface IShowMessage {
    MessageBoxResult Show(...);
}

使用类似的实现

class DoShowMessage : IShowMessage {
    MessageBoxResult Show(...) { return MessageBox.Show(...); }
}

class NeverShowMessage : IShowMessage {
    MessageBoxResult Show(...) { return MessageBoxResult.OK; }
}

并在需要时使用任一实现。但是,在当前的代码库中,由于MessageBox.Show(...) 调用的数量庞大,这是不可行的。不过,我需要摆脱 MessageBox 模式弹出窗口。

还有其他方法吗?

【问题讨论】:

  • 如果你只是想摆脱模态MessageBox,你可以使用你自己的实现并使用查找/替换来替换所有的消息框。

标签: c# winforms messagebox


【解决方案1】:

您可以使用Reflection 覆盖MessageBox.Show 方法。

查看此帖子以获取示例:

Is there a way to "override" a method with reflection?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-06-22
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-12-12
    相关资源
    最近更新 更多