如何在设计器“Collection Editor Windows”中制作可编辑对象?

How to make editable objects in the designers `Collection Editor Windows`?

我创建了一个自定义组件,派生自 TDataSet。
现在我从名为 gttTables 的自定义类型 dsTable 创建了一个集合。 (全部代码在下方)

当我将组件放在表单上时,集合 gttTables 出现在 property window 中,当我单击 3 点按钮时,Collection Editor Windows 按预期出现。
Collection Editor Windows 中,我可以单击 Add,这将在 window 中添加一个新项目,它似乎是我预期的 dsTable 类型。

现在解决问题。
Collection Editor Windows 中,我无法 see/change 左侧列表中每个 dsTable 的任何属性。右侧只显示Value 值为gttControls.dsTable.
让我告诉你我对这张图片的意思

我想在此处查看每个 dsTable 的属性添加到 Collection Editor Windows,以便我可以编辑它们。

这是我的完整代码。
我的问题是我应该怎么做才能编辑 Collection Editor Windows 中每个添加的 dsTable 的属性?

public partial class gttDataSet : DataSet
{
    Collection<dsTable> _dsTables = new Collection<dsTable>();

    [DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
    [Editor("System.ComponentModel.Design.CollectionEditor, System.Design", typeof(UITypeEditor))]
    [Category("GTT")]
    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    public Collection<dsTable> gttTables
    {
        get { return _dsTables; }
        set { _dsTables = value; }
    }
}

public class dsTable
{
    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    string SelectText { get; set; }

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    string SelectTextForUpdate { get; set; }

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    string DesignWhereText { get; set; }

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    string UserWhereText { get; set; }

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    bool IsStoredProcedure { get; set; }

    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    bool RetrieveColumns { get;  }
}

编辑
我查看了 How do you create a custom collection editor form for use with the property grid?,虽然它包含有用的信息,但对我来说似乎没有必要。 @Serg 的回答解决了我的问题

您应该使 dsTable class 属性 public 能够使用 PropertyGrid

编辑这些属性
public class dsTable
{
    [Browsable(true)]
    [EditorBrowsable(EditorBrowsableState.Always)]
    [Editor("System.ComponentModel.Design.MultilineStringEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", typeof(UITypeEditor))]
    public string SelectText { get; set; } // <--- changed here

    //make the same changes for other properties you want to edit.
}