你好 , 我在一個A專案新增一個繼承的 FORM 去繼承 B專案裡的一個 FORM
A , B 專案在建置的時候都不會出現錯誤訊息,都線是專案建置成功。
B 專案的 FORM 可以正常的在設計階段開啟。
但是在下一次開啟 A 專案的時候卻出現以下錯誤訊息:
=> 無法將型別 'System.Windows.Forms.PropertyManager' 的物件轉換為型別 'System.Windows.Forms.CurrencyManager'
有時候也會出現助樣的錯誤訊息:
=> 服務容器中已存在服務System.Windows.Forms.Design.IEventHandlerService.
參數名:serviceType
A專案的 FORM 就無法打開了
找了很多的資料都無法查到是哪邊發生的問題。
有人解決過這個問題嗎? 為何會發生這樣的問題呢?
我的專案是 c# 專案。
感謝回應與解答說明, 謝謝。
參考一篇文章:BindingContext 類別
其中有段話: 因為 BindingManagerBase 類別是抽象的,所以 Item 屬性的傳回型別若不是 CurrencyManager 就是 PropertyManager。
您可能在WinForm中有個Databind物件的回傳值是屬於PropertyManager, 而指定給屬性是CurrencyManager的容器, 因為C#無法進行型別轉換, 就出現這個錯誤.
這是我的猜想, 可能真正的解答會個十萬八千里, 主要是沒有看到實際的式碼.
另外的ServiceType...可個網頁在說這個問題: http://www.agusblog.com/wordpress/systemwindowsformsdesignieventhandlerservice-already-exists-in-the-service-container-201.htm
至於, 您要如何改程式, 得由您自已來處理了, 因為沒看到您的原始程式 .
iT
你好, 母Form和子Form都沒用到任何的 DataBind 物件。
之前開都很正常,不知為何今天開就出現這個問題。
謝謝。
抱歉....應該是說BindingContext....
由於大部分 Windows Form 應用程式會透過 BindingSource 進行繫結, 而BindingSource會以CurrenryManager來進行封裝, 或許您的程式中用到BindingManagerBase, 但另一方面又用了BindingSource, 導致CurrencyManager轉到PropertyManager的問題.
如果是這樣, 您可能需要考慮改一改程式....
但問題是, 您提到的之前都不會的情形, 這一點我覺得有再確認的必要. 不知道這個專案有沒有用其他電腦上的VS2008開啟過, 如果是, 您可能要回到上次開啟的電腦中去改程式, 因為, VS2008真的有些狀況不太對...我也經常一個專案拿到別台電腦開啟後, 再回來就開出一堆問題, 似乎和VS2008的環境有關...基本上, 應該都是宣告不嚴謹導致有時會被抓到, 有時不會....