简述一下:
我在某控件A的validated方法中会清除页面上另一块区域的一些控件B,并且动态创建一些新的控件B
(这个控件B是由一组Edit组成的,其中一部分是Enabled=false,其实就是一个Detail行)
现在的问题是,当我的光标停留在控件A时,用鼠标点击控件B中Enabled=false的部分(包括控件之间的缝隙)时,会触发A的validated方法,于是当前所有的控件B会被Dispose之后重新创建,然后就报错了,
大概意思是找不到B
我理解的原因是当执行完A的validated方法后,系统会去继续执行B的点击事件,但是此时已经找不到刚才我点击的B了求助:如何不让系统报错?

解决方案 »

  1.   

    WinForm还是WebForm?A到底是个什么控件?怎么会管那么宽?
      

  2.   

    似乎操作邏輯有些問題.控件爲什麽要運行時dispose?
      

  3.   

    是winform,A是個普通的Edit,需求如此,我也沒有辦法
    簡單的説,A是查詢條件,B是查詢的明細行
      

  4.   

    那也只要設置B的狀態就可以了,沒有必要dispose吧??
      

  5.   

    dispose是一定的,因爲還牽涉到很多其他的問題
      

  6.   

    其实你这里逻辑有问题,你实际上是修改了A的内容,B就必须刷新。
    那么,在修改了A的内容的同时,点击了B的话,到底是先执行B的点击操作还是先刷新B,如果是先刷新B,则刚才点的B都可能不存在了,无法完成点击操作。如果是先执行B的点击操作,那么如果下面的操作与B有关,是不再刷新B还是怎么办呢?你的用户界面逻辑没有规划好。
      

  7.   

    這應該不是用戶界面的邏輯問題,點擊B只是用戶的一個普通操作,並不是我要實現的特殊功能,我要實現的功能只是在修改A的時候刷新B,而點擊B出現的錯誤屬於意外的bug。
    至於孰先孰后,並不是我能控制的,只能看C#提供的事件的先後順序,如果有一個事件在“我點擊B的動作發生之後,A的validated觸發之前”被觸發,那這個問題也就迎刃而解了,可是我對C#並不熟悉,還請高手指點。
      

  8.   

    A得到光标的时候把B的click事件减掉可以否??