【问题标题】:WinForm propertygrid Collection Editor Add/Remove buttons InactiveWinForm propertygrid Collection Editor 添加/删除按钮 非活动
【发布时间】:2013-02-16 12:39:27
【问题描述】:

我正在使用通用属性网格来编辑来自多个自定义类的值。其中一些类有集合,我可以在集合编辑器中毫无问题地打开这些集合。如果集合已包含对象,我可以选择这些对象并在右侧对其进行编辑,但“添加/删除”按钮处于非活动状态。

我知道其中一些集合将需要自定义编辑器,因为它们非常复杂 - 但其中大多数都非常简单。是否有一种简单的方法可以激活这些简单类的添加/删除按钮,还是我需要为每个集合创建一个自定义编辑器?

【问题讨论】:

    标签: c# .net winforms propertygrid collectioneditor


    【解决方案1】:

    要启用添加和删除按钮,您需要集合实现非通用IList 接口,并且显然ReadOnly 属性必须返回false

    请注意,您需要对类进行显式实现,仅从本身派生自 IList(如 IList<Something>)的类或接口派生将工作。

    例如,以下是不行的:

    public class MyStuffCollection : List<MyStuff>
    {
    }
    

    以下是可以的:

    public class MyStuffCollection : List<MyStuff>, IList
    {
    }
    

    【讨论】:

    • 谢谢,我不确定您所说的explicit implementation on the class 是什么意思——您是说我必须构建自己的类,还是.NET 中有明确实现它的类?
    • 这意味着你的类必须直接派生自IList。从本身派生自IList 的类或接口派生是不够的。
    • 既然它需要从IList派生,那是否意味着我将无法使用SortedList或Dictionary之类的东西?
    • 不,你只需要实现 IList(你可以将大多数方法的实现推迟到现有的成员类,或者你派生的类)。
    • 对不起,我太密集了,我通常可以关注所有这些东西。无论如何,您是否可以发布一个示例,说明我如何使用'IList` 实现字典样式集合&lt;key, value&gt; 或链接到示例/帮助页面。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-01-27
    • 1970-01-01
    • 1970-01-01
    • 2013-06-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多