有两个窗体 form1、form2 在form2中编辑完数据后用委托传递事件给form1。在form1中的接收事件中操作一个treeview控件。
每当form1关闭后再打开,那么这时接收事件函数中对treeview操作就会报错,提示treeview对象已经被释放。事件类
public static class Middle
{
   public delegate void SendMessage(string str);
   public static event SendMessage sendEvent;
   public static void DoSendMessage(string str)
   {
      sendEvent(str);
   }
}
接收事件函数
private void Middle_sendEvent(string str)
{
   treeview1.Nodes.Clear();
   .......
}

解决方案 »

  1.   

    接收事件函数 
    private void Middle_sendEvent(string str) 

      treeview1.Nodes.Clear(); 
      ....... 
    } 也该用静态试下吧
      

  2.   

    form1关闭后再打开?
    感觉可能的情况就是form1已经被释放
    1.重新打开form1时没有重新给委托添加事件?
    2.委托的事件只加没减?ps:代码给的太少了
      

  3.   

    你应该在form1打开时,为sendEvent重新注册事件。
    Middle.sendEvent -= Middle_sendEvent;
    Middle.sendEvent += new Middle.SendMessage(Middle_sendEvent);
    Middle.DoSendMessage("abc");
      

  4.   

    问题解决,特别感谢两位waterspace,dk385 。见着有分。