窗口1下有一个zedgraph(zg1就是zedgraph),里面有1个按钮和一个委托:按钮1:
zg1.GraphPane.XAxis.Scale.Max = 3000;
zg1.GraphPane.XAxis.Scale.Min = 0;委托1:
zg1.GraphPane.XAxis.Scale.Max = 5000;
zg1.GraphPane.XAxis.Scale.Min = 0;窗口2下有一个按钮,这个按钮的作用就是调用窗口1zedgraph中的委托;现在问题如下:
1)当我第一次打开窗口1时(窗口1,zedgraph所在窗口初始化完毕了),此时我利用中断模式调式,发现:无论我是按下窗口1中的按钮,还是去按窗口2中的按钮:均能够正确执行”zg1.GraphPane.XAxis.Scale.Max = 3000;zg1.GraphPane.XAxis.Scale.Min = 0;” 和“zg1.GraphPane.XAxis.Scale.Max = 5000;
zg1.GraphPane.XAxis.Scale.Min = 0;”
 
   为正确;
2)但是当我第一次打开窗口1后,关闭窗口1(zedgraph所在窗口),再重新打开窗口1(关闭后第二次打开zedgraph所在窗口);
    此时:我点击窗口1(zedgraph所在窗口)的按钮,执行代码“zg1.GraphPane.XAxis.Scale.Max = 3000;
zg1.GraphPane.XAxis.Scale.Min = 0;”为正确;
          我点击窗口2中的按钮,执行委托代码“zg1.GraphPane.XAxis.Scale.Max = 5000;
zg1.GraphPane.XAxis.Scale.Min = 0;”,就错误,中断模式发现,此状态下代码中的“zg1.GraphPane”属性为null!!!!

   
    为错误!!!
就是说为什么在窗口1关闭在重新打开(第二次打开)的情况下,别的窗口的委托函数执行到窗口1(zedgraph)所在窗口时,“zg1.GraphPane”属性为null,为错误????
而在同样的情况下,不用别的窗口的委托,直接使用窗口1(zedgraph所在窗口)的按钮等控件时,,“zg1.GraphPane”属性为正常,为正确!!!
我想了很久 没有想明白!还请高手指教了  小弟在此谢过了!!

解决方案 »

  1.   

    可能的原因会不会是这样:
        1、打开窗口1(no1),窗口2调用的委托挂接到 窗口1(no1).zg1
        2、关闭窗口1(no1)
        3、打开窗口1(no2)
        此时在内存中窗口1(no1).zg1仍没有释放,你调试的窗口2调用的委托仍作用于这个对象即窗口1(no1).zg1,而此时窗口1(no1)已关闭,所以窗口1(no1).zg1.GraphPane为null
        打开窗口1(no2).zg1.GraphPane正常,所以你窗口1(no2)中的按钮工作正常
        建议窗口1关闭前将该委托删除
        窗口1重新打开后重新挂上该委托然后再测试下
      

  2.   

    非常感谢大家的回复!!更加感谢jxy21c(飞刀)的回复!!我只能说 您真的是太专业了!!真的如你所说,我在窗口关闭时将委托赋值为null,然后无论我第几次打开,都没有问题了哈哈小弟在此谢过了!非常感谢结贴咯