У меня недавно была ситуация, когда у меня была форма, которую я перехватывал и обрабатывал сообщения. Все было нормально, когда форма была открыта, но после закрытия и открытия снова я получаю ObjectDisposedException.ObjectDisposedException при использовании IMessageFilter
я, наконец, понял, что мне нужно позвонить
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)
{
}
}