【问题标题】:Hide a control method from Intellisense?从 Intellisense 隐藏控制方法?
【发布时间】:2013-11-05 17:29:31
【问题描述】:

我有一个 ListView 用户控件,我在其中实现了已知的 AddItem RemoveItem 过程,如下所示:

Public Function AddItem(ByVal Item As ListViewItem) As ListViewItem

    RaiseEvent ItemAdded(Me, New ItemAddedEventArgs With { _
                             .Item = Item
                       })

    Return MyBase.Items.Add(Item)

End Function

然后我想从智能感知或控件本身隐藏(或以任何方式完全删除)本机方法 Listview.Items.Add(),以仅显示我的 AddItem 方法而不是 Items.Add

我该怎么做?

【问题讨论】:

    标签: .net vb.net winforms user-controls intellisense


    【解决方案1】:

    您可以尝试隐藏 Items 集合,然后应用属性将其隐藏:

    <Browsable(False), _
     EditorBrowsable(EditorBrowsableState.Never)> _
    Public Shadows ReadOnly Property Items As ListViewItemCollection
      Get
        Return MyBase.Items
      End Get
    End Property
    

    【讨论】:

    • 谢谢,但是如果我这样做了,那么“Items”成员就会被隐藏,我只想隐藏“Items.Add”而不是“Items”。
    • @ElektroStudios 嗯,这几乎需要替换 ListView 控件中的 ListViewItemCollection 类。我认为这是不可能的。
    【解决方案2】:

    虽然它不会对 Intellisense 隐藏 AddRemove 方法,但您可以使用 AsReadOnly 函数确保列表以 ReadOnlyCollection 的形式公开。这将通过抛出NotSupportedException 来阻止使用AddRemove 方法,因此它将强制开发人员使用您的AddItemRemoveItem 方法。

    【讨论】:

      猜你喜欢
      • 2012-02-23
      • 1970-01-01
      • 2010-11-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多