我必須重寫從Panel的Panel控件擴展的myControl的「Controls」屬性的Add方法。爲此,我將ControlCollection類擴展到了MyControlCollection中,我重寫了它的Add方法。現在我聲明瞭MyControlCollection類型的Controls屬性來隱藏面板的Controls屬性。當我訪問this.Controls.Add(控件)時,它引用overriden Add方法。但是,如果我拖拽並在myControl上放置一個控件,行爲是基本類型的Add方法。任何機構能否提出這個問題的原因和解決辦法?提前致謝。C#中面板的覆蓋控件屬性
2
A
回答
1
原因是設計者調用Control.Controls而不是訪問您的單獨集合。說實話,你的解決方案聽起來像註定會引起麻煩 - 隱藏成員通常會這樣做。
你想達到什麼目的?它看起來不像ControlCollection
中有一個很好的事件,但可能有不同的方法來解決這個問題。
編輯:我剛剛看到Control
有一個ControlAdded
事件 - 會訂閱那對你來說足夠嗎?
3
您可以改爲覆蓋CreateControlCollection函數,並返回您選擇的類的實例,該實例繼承System.Web.UI.ControlCollection。 從您的類中移除Controls屬性,您不需要覆蓋或隱藏原始實現。
+0
哦,很好 - 我沒有意識到這一點。我想如果可能的話,我仍然會嘗試不要求自己的ControlCollection,但很高興知道它可以完成:) – 2008-10-24 12:59:36
0
其實我必須限制在我的控件中添加控件,如果一些標誌爲真。我使用了ControlAdded事件,但僅添加了問題。 ControlAdded僅在位置0,0處的父項中添加該控件後觸發。在引發該事件後,它會在放置時根據鼠標位置重新定位控件。如果我從ControlAdded的EventHandler異常中的父級中刪除新的控件。
相關問題
- 1. c#面板線覆蓋
- 2. WebBrowser控件:如何覆蓋URL屬性
- 3. C#覆蓋DefaultValue屬性?
- 4. 覆蓋FormView控件模板
- 5. 覆蓋屬性
- 6. 覆蓋屬性
- 7. 覆蓋屬性
- 8. 屬性覆蓋
- 9. 覆蓋屬性
- 10. 覆蓋屬性
- 11. 覆蓋樣式中的visualstate而不覆蓋控件模板
- 12. 條件屬性被覆蓋
- 13. 覆蓋ANT屬性文件
- 14. 覆蓋屬性文件
- 15. 覆蓋事件屬性
- 16. 覆蓋ControlTemplate中的屬性
- 17. 覆蓋屬性屬性
- 18. 在C#中覆蓋速記屬性
- 19. WPF:故事板集屬性覆蓋後面的代碼?
- 20. 屬性文件被屬性任務覆蓋的屬性文件
- 21. C#:覆蓋父類的屬性
- 22. FactoryBoy覆蓋屬性
- 23. 覆蓋屬性CSSStyleDeclaration.textShadow?
- 24. Rails屬性覆蓋
- 25. 覆蓋Form.Text屬性
- 26. 覆蓋類屬性
- 27. 覆蓋css屬性
- 28. 覆蓋HTMLElement.classList屬性
- 29. 覆蓋CSS屬性
- 30. 覆蓋persistence.xml中屬性
我必須根據某些屬性限制在myControl中添加控件。 ControlAdded在位置0,0處的父級添加新控件後觸發。之後它將控制權重定位到期望的位置。如果我從ControlAdded的EventHandler中的父級中刪除該新控件,則會發生異常。 – Lalit 2008-10-24 13:15:53