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