在Designer中加载表单时出现“找不到类型”错误

时间:2010-01-04 18:29:41

标签: c# .net generics c#-3.0 designer

这是与此问题完全相同的问题:“Could not find type” error loading a form in the Designer

在有人结束我的问题之前,请先阅读一下。你会发现它没有得到真正的答案。我希望从这个问题得到一个完整的答案(而不是解决方法)。

当我创建一个从Control继承并使用泛型的类时,该类无法在设计器中加载。

以下是示例:

class OwnerDrawnListBox<T> : System.Windows.Forms.Control
{

    private readonly List<T> _items;

    // Other list box private stuff here

    public OwnerDrawnListBox()
    {
        _items = new List<T>();
    }

    // More List box code
}

然后我在我的设计师中使用它:

private OwnerDrawnListBox<Bag> lstAvailable;

private void InitializeComponent()
{
    // Used to be System.Windows.Forms.ListBox();
    this.lstAvailable = new ARUP.ScanTrack.Mobile.OwnerDrawnListBox<Bag>(); 
    // Other items
}

如果泛型类是子类(非泛型),那么引用的问题说它工作正常(即如果我做了Class BagOwnerDrawListBox: OwnerDrawnListBox<Bag>)。

我想知道的是有一种“修复”这个方法,以便设计师接受通用项目吗?

附注:我正在使用Compact Framework。

1 个答案:

答案 0 :(得分:0)

据我所知,Windows窗体设计器不支持通用控件。维护设计器支持的唯一方法是使用非泛型子类,就像你说的那样。无论如何,任何“修复”都只是一种解决方法。