Проблема, вытекающая из ToolboxItemAttribute в .Net, Winforms - PullRequest
0 голосов
/ 18 сентября 2010

В качестве примера приведем простой атрибут, полученный из 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 Ответ

1 голос
/ 18 сентября 2010

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

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