Designer Collection Editor,如何知道当前索引?

时间:2017-02-13 20:03:55

标签: c# custom-controls

我的控件有一个TabPage类型的子控件集合。我想创建一个根据其索引分配名称的新子实例。为此,我需要知道集合的当前状态。但是怎么样? CreateInstance仅提供项目类型,而不是集合参考。

public class MyEditor : CollectionEditor
{
    public MyEditor(Type type) : base(type)
    {
    }

    protected override Type[] CreateNewItemTypes()
    {
        return new[]
        {
            typeof(TabPage)
        };
    }

    protected override object CreateInstance(Type itemType)
    {
        return new TabPage("Page 1"); //<-- How to know current index?
    }
}

1 个答案:

答案 0 :(得分:0)

由于缺少示例,我使用反编译.NET Framework并了解Microsoft如何做到这一点。微软的TabPageCollectionEditor位于“System.Design.dll”中。

您可以访问具有以下集合的控件:

var control = Context?.Instance as MyTabControl;

然后获取当前索引是一件微不足道的事情:

int currentIndex = control.TabPages.Count;