Проблема, вытекающая из ToolboxItemAttribute в.Net, Winforms

В качестве примера, вот простой атрибут, полученный из ToolboxItemAttribute:

<ToolboxItemX(False)> _
Public Class Class1
    Inherits Button
End Class

Public Class ToolboxItemXAttribute
    Inherits ToolboxItemAttribute

    Public Sub New(ByVal defaultType As Boolean)
        MyBase.New(defaultType)
    End Sub

End Class

Проблема в том, что когда я показываю набор инструментов, в нем появляется Class1. Как будто мой атрибут игнорируется, и поэтому используется атрибут toolboxitem по умолчанию.

Я использовал рефлектор, чтобы взглянуть на логику ToolboxService.GetToolboxItem, и, насколько я могу видеть, он должен взять мой атрибут и убедиться, что элемент не должен отображаться на панели инструментов.

PS: я пытался сбросить набор инструментов, закрыть ide и снова открыть и т. Д.

1 ответ

Решение

Панель инструментов Windows Forms удивительно капризна. Это должно работать, но на самом деле это не так. Не знаю почему, этот код заблокирован внутри Visual Studio. В качестве обходного пути вы можете скрыть это, используя DesignTimeVisibleAttribute. Как это:

<ToolboxItemX(False)> _
<DesignTimeVisible(False)> _
Public Class Class1
    Inherits Button
End Class
Другие вопросы по тегам