2012-01-09 59 views
0

我有一個繼承Windows窗體組合框的類。 添加項目時,班級應該做額外的工作,但沒有這樣的事件。 因此,我添加了添加和清除項目的方法,這些項目可以完成額外的工作。 爲了避免開發者直接訪問Items並添加到Items中,我重載了Items屬性以引發異常。在VS設計器中運行不同的代碼

這一切工作正常,除了VS設計師。設計者嘗試訪問Items屬性,獲取異常並顯示錯誤。

VS設計器編譯代碼時是否存在一個定義的常量?這似乎是最適合這項任務的。

+1

你的意思是* shadowed *當你說你已經重載* Items屬性? – 2012-01-09 07:16:16

+0

這是vb.net所以_shadow_ is _overload_ – 2012-01-09 07:23:41

+1

不,他們不是一回事。重載提供了一個具有相同名稱但*簽名不同的新成員(通常用於方法)。陰影提供了一個新的成員,與現有的* *簽名相同,但不會覆蓋舊的成員。 – 2012-01-09 07:31:28

回答

1

您是否在尋找Control.DesignMode住宅?說實話,從設計的角度來看,這聽起來不太好,因爲有一個ComboBox的子類,它不能用作正常的ComboBox ...如果你真的只是隱藏的(或影子)Items財產與另一個,那麼任何人提到它作爲 a ComboBox無論如何將有訪問原始Items財產。目前還不清楚你在做什麼真的試圖在這裏做。

+1

我想要做的是有一個組合框,當項目被添加到組合框時,我可以做額外的工作。如果有這樣的事件,我不需要這個。 是的,任何將它稱爲組合框的人都可以繞過這一點。但是,沒有人有理由將其稱爲組合框,除非他們故意試圖做惡作劇。表單的成員是繼承類的一個實例。 我知道這並不理想,但我試圖找到一些能在大多數情況下工作的東西,沒有開發者忘記他們不能使用Items屬性。 – 2012-01-09 07:25:31