2015-05-11 4 views
1

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

Public Class PanelBar 
    Inherits Panel 

    Private _mCusBtn As CustomButton 

    Public Sub New() 

     InitializeComponent() 

     _mCusBtn = New CustomButton() 
     AddHandler _mCusBtn.ButtonClicked, AddressOf CustomButtonClicked 
     Controls.Add(_mCusBtn) 

    Public Sub CustomButtonClicked(ByVal btn As CustomButton, ByVal buttonId As Int32) 

     ' Do important stuff here... 

    End Sub 

End Class 

Однако, когда оно появится в панели инструментов этого управления также отображает:

Public Class CustomButton 
    Inherits Button 

    Public Property BtnId As Integer 
    Public Property BtnColor As Color 
    Public Event ButtonClicked(sender As CustomButton, buttonId As Int32) 

    Public Sub New() 

     ' Set new property values 

    End Sub 

    Private Sub CustomButtonClicked(sender As Object, e As EventArgs) Handles Me.Click 
     RaiseEvent ButtonClicked(Me, BtnId) 
    End Sub 

End Class 

Так что я попробовал установить класс CustomButton для друга, чтобы ограничить внешний доступ, потому что я не хочу, чтобы это как элемент управления в моей панели инструментов, и я получаю эту ошибку: «btn» не может выставлять тип «CustomButton» вне проекта через класс «PanelBar». в событии CustomButtonClicked первого класса.

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

+2

украсить кнопку '' и очистить/перестроить. FWIW там нет ничего, для чего требуется собственный класс. – Plutonix

+0

Я не знаю, как отметить сообщение как ответ, потому что это было так. Мой класс CustomButton фактически наследуется от другого класса кнопок, где он фактически нарисован. Я не думал, чтобы попытаться просто обойти пример из предыдущей и вместо этого объявить кнопку из моего рисованного класса. Но решение действительно помогает с другими элементами управления в моем классе. – Recoil

ответ

2

Чтобы «спрятать» управление из панели инструментов, используйте ToolboxItem атрибут:

<ToolboxItem(False)> 
Public Class CustomButton 
    ... 

Если ваш класс наследует от Component, а не Control, и вы не хотите, чтобы показать в лотке формы компонента в нижнее использование:

<DesignTimeVisible(False)> 
Public Class FooBarItem 
    ... 
Смежные вопросы