我正在尝试使用System.ComponentModel.DesignerCategory
Attribtue来阻止扩展的Tab页面组件在设计器中自动打开。关于其他StackOverflow问题1,2,3的建议似乎不起作用。
以下是组件上的代码
<System.ComponentModel.DesignerCategory("Code")>
Public Class ExtendedTabPage : Inherits Windows.Forms.TabPage
这是我的.vbproj文件中的代码
<Compile Include="ExtendedTabPage.vb">
<SubType>Component</SubType>
</Compile>
我尝试使用""
和"Code"
初始化DesignerCategory属性,进行重建并重新打开解决方案,但是我仍然可以通过双击组件来获得下面的屏幕。我是否必须删除项目SubType?这会影响代码的编译方式吗?
答案 0 :(得分:3)
那个窗口是皮塔饼,但是没有任何东西可以阻止它出现。
请注意原始TabPage控件如何不显示在工具箱中,它仅由TabControl的自定义设计器添加。这是通过给它[ToolboxItem(false)]属性来完成的。你的克星,[Designer]属性为TabControl和TabPage类选择自定义设计器。您必须创建自己的ExtendedTabControl并为其设计设计器。这不好玩,TabControlDesigner类是一个相当复杂的设计师。它也是内部,因此您无法从中获取。使用像Reflector或ILSpy这样的反编译器可以窥视这些设计器中的代码。我不能推荐这个,除非你有一个庞大而苛刻的付费程序员用户群。
编写代码而不是试图在设计时使这项工作是可行的。但请注意,您必须在运行时将TryCast()转换为从TabPages属性到派生类的TabPage引用。