最近,我遇到了一种情况,我有一个表单,用于截取和处理消息。第一次打开表单时,一切都很好,但是在关闭和打开之后,我会得到一个ObjectDisposedException。
我终于意识到我需要打电话
Application.RemoveMessageFilter(this)否则,当关闭窗体时,它会继续尝试处理已关闭窗体的消息。我在这里没有看到任何能解决这个问题的问题/答案,所以我想补充一下,以防其他人也有同样的问题。
此外,MSDN上的示例也不显示移除消息筛选器。
public partial class Template_Editor : Form, IMessageFilter
{
public Template_Editor(ICollection<Vendor> vendorList)
{
InitializeComponent();
Application.AddMessageFilter(this);
}
public bool PreFilterMessage(ref Message m)
{
}
}发布于 2016-05-17 16:14:15
一定要打电话
Application.RemoveMessageFilter(this)完成处理消息后(即关闭表单时)
https://stackoverflow.com/questions/37281440
复制相似问题