从工具箱中删除/隐藏公共控件

时间:2015-05-11 18:04:31

标签: vb.net visual-studio

我在制作自定义控件时遇到问题。当我创建和构建控件时,我的工具箱就是我所追求的:

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'在第一堂课的CustomButtonClicked事件中,通过课程' PanelBar'。在项目之外。

我不确定是否有必要限制有助于构成我的自定义控件的控件的范围,因为它必须访问它们上的事件。说实话,我不记得有一次我遇到了一个自定义控件没有列出构成它的控件,所以我不完全确定这是可能的......但我真的会感谢我能得到的任何建议。

1 个答案:

答案 0 :(得分:2)

要从工具箱中“隐藏”控件,请使用exec { command => 'for i in vars do echo $i more-statements done'; } 属性:

def parse(string, **kw):
    try:
        ...  # Body of function here
    except ParseError:
        if 'default' in kw:
            return kw['default']
        raise

如果您的类继承自default而不是ToolboxItem,并且您不希望它们显示在底部的表单组件托盘中,请使用:

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