簡體   English   中英

VS2010中的WinForms視覺繼承問題

[英]WinForms visual inheritence issue in VS2010

對該項目的快速背景知識:它是C#.Net 4,具有智能客戶端工廠的WinForms,不幸的是有很多視覺繼承。

以下是我正在研究的團隊遇到的問題的簡要概述,這似乎是相當間歇性的:

有人會打開其中一個客戶端模塊項目,開始在其中一個視圖上工作,雙擊視圖打開設計器,Visual Studio會給他們一個設計時錯誤,例如:

沒有辦法退縮; 如果你從這里重建而沒有做下面的工作,那么錯誤仍將存在。 我們發現的唯一工作是清理客戶端解決方案,關閉Visual Studio(您必須這樣做),重新打開Visual Studio並重建解決方案。 下次嘗試打開視圖時,它將起作用。 但是錯誤會再次出現 - 它似乎是在重建X次之后(可能只有在你構建解決方案時設計師打開視圖的時候?)

沒有人抽出時間真正深入研究這個問題,目前沒有人有時間! 所以,如果有人可能對可能發生的事情有所了解,我想知道(有點遠射)? 或者也許是一旦我們有一點時間來研究這個問題就會開始挖掘?

如果你使用視覺繼承,這些問題是生活中的事實,它們不可能永遠消失。

我在當前項目中廣泛使用UserControl繼承。 我曾經經常遇到你所描述的問題。 隨着時間的推移,我已經將設計細化到現在偶爾發生的程度,而且我很少再進行干凈 - 重啟 - 重建舞蹈了。

你的里程可能會有所不同,但我認為我為減少這個問題所做的主要工作是擺脫設計時的組裝間數據綁定。

例如,當您在表單上刪除BindingSource並將其數據源設置為另一個程序集中的類型時。

(好吧,它總是來自另一個程序集,因為我從來沒有在我的UI中定義同一個程序集中的類型。所以我知道,組裝之間的事情甚至可能不是一個因素。)

無論如何,我最終擺脫了大部分或全部這些設計時綁定,並在運行時設置了所有綁定。 問題已經消失了99%。 它偶爾會發生,但我不打算嘗試解決它。

無論你做什么,都不要從泛型基類繼承表單/控件。 這100%的時間打破了它。 如果您需要這樣做,可以通過快速搜索找到解決方法。

微軟幾乎肯定不會解決這些問題,所以要習慣它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM