2013-05-06 43 views
1

我正在嘗試使用System.ComponentModel.DesignerCategory Attribtue來防止擴展選項卡頁面組件在設計器中自動打開。對其他StackOverflow問題1,2,3的建議似乎不起作用。System.ComponentModel.DesignerCategory(「Code」)仍在打開設計器

這裏的組件

<System.ComponentModel.DesignerCategory("Code")> 
Public Class ExtendedTabPage : Inherits Windows.Forms.TabPage 

下面的代碼在我的.vbproj文件中的代碼

<Compile Include="ExtendedTabPage.vb"> 
    <SubType>Component</SubType> 
</Compile> 

我已經試過了"""Code" initializaing的DesignerCategory屬性,重建並重新打開解決方案,但我仍然通過雙擊組件來獲得下面的屏幕。我必須刪除項目的子類型嗎?這會影響代碼編譯的方式嗎?

Component Designer

回答

3

該窗口是一個皮塔但沒有什麼可以做,從顯示出來阻止它。

請注意原始TabPage控件如何不顯示在工具箱中,它只是由自定義設計器添加到TabControl。這是通過給它[ToolboxItem(false)]屬性來完成的。而你的剋星,[Designer]屬性爲TabControl和TabPage類選擇自定義設計器。您必須創建自己的ExtendedTabControl併爲其設計一個設計器。這並不好玩,TabControlDesigner類是一個相當複雜的設計器。這也是內部所以你不能從它派生。使用Reflector或ILSpy之類的反編譯器可以查看這些設計器中的代碼。除非你有挑剔的支付程序員的龐大和苛刻的用戶羣,否則我不能推薦這個。

編寫代碼,而不是試圖使在設計時這項工作是可行的。但請注意,您必須在運行時將TryCast()轉換爲您從TabPages屬性獲得的TabPage引用到您的派生類。

+0

好的,謝謝!所以,換句話說,比單擊右鍵並選擇查看代碼花費的時間要多得多。 – KyleMit 2013-05-06 14:04:53

+0

對。或者點擊截圖中的「點擊此處」鏈接。 – 2013-05-06 14:08:49

相關問題