設計器加載程序未提供根組件,但沒有指出緣由

      用C#作一個WinForm程序,其中用到了DevExpress的控件,出現了一下問題:設計時並無提示什麼錯誤或警告,程序運行時設計界面顯示爲一片空白,終止程序運行,界面變成了一個錯誤警告:設計器加載程序未提供根組件,但沒有指出緣由。雖然關閉設計界面而後從新打開,界面顯示能從新正常顯示,並且整個過程當中不影響程序的運行,可是不斷的提示這種錯誤,須要不斷的關閉、從新打開設計界面,實在使人不爽,並且,有了問題不去解決,我認爲不是一個好的程序員應有的做風,因此即便這個錯誤不影響運行,我也決定解決它。程序員

      經過查資料和向資格老的同事請教,將緣由歸結爲兩個可能:一、VS2010的Bug 二、DevExpress的Bug。雖然網上列出了不少說法,可是都加了可能、好像這樣的字眼,即沒有肯定問題的根源。我認爲應該是第二種可能,便是DevExpress的問題,經過網上查資料,我找了一個與我狀況十分相似的,其將問題歸咎於DevExpress套件中BarManager組件的釋放順序。在個人設計界面中,有的BarManager的父窗體並非設計界面的根窗體,即並非設計界面最大最外層的窗體,而是位於根窗體上的相似於PanelControl 或者SplitContainerControl這樣的窗體(這裏將父窗體設置爲這些Control是程序上的須要),因此在釋放這些父窗體的時候,若還有Menu引用着該BarManager,可能就會致使界面的Dispose出現問題,從而致使了程序終止運行後設計界面報錯。爲了試着解決問題,我將BarManager替換爲WinForm的ToolStrip控件,而後從新試運行,問題沒再出現。不過,很遺憾,雖然問題解決了,可是並無真正的找到問題出現的根本緣由,以及對應的解決問題的最好辦法。關於BarManager,其實還有一個小問題:經過設計界面添加一個Item後,再經過設計界面刪除,可是查看設計器代碼會發現添加Item時自動生產的一些代碼並無刪除,有些會有隱患,好比不能再添加相同名稱的Item,有些沒有什麼隱患,可是對於程序員來講,多餘的代碼老是不該該存在的,因此還須要本身去手動查看哪些是須要刪除的代碼,這點也應該屬於BarManager一個很大的缺點。設計

      小結:DevExpress的控件確實比WinForm的要更加美觀一些,用起來方便一些,可是DevExpress的控件的bug確實也比WinForm的多,例如這一個小Bug就讓我對DevExpress感受很不爽,一樣的,咱們也是作程序的,若是咱們作的程序出現讓用戶很不爽的Bug,用戶的感受應該和我如今的感受應該是同樣的,因此做爲一個程序員,應當儘量的減小本身程序中的bug。作到程序中一點問題也沒有,恐怕沒有一個程序員敢這麼擔保吧,可是應當不遺餘力的防止bug的出現,這須要強大的技術能力做保證,同時也須要一個嚴格自我要求的態度。orm

相關文章
相關標籤/搜索