防止WinForms MessageBox.显示模式弹出框

本文关键字:模式 显示 WinForms MessageBox 防止 | 更新日期: 2023-09-27 18:17:25

是否有办法拦截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模态弹出。

还有别的办法吗?

防止WinForms MessageBox.显示模式弹出框

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

看看这篇文章的例子:

有没有办法"覆盖"?有反射的方法?