在设计器中加载表单时出现“找不到类型”错误
Posted
技术标签:
【中文标题】在设计器中加载表单时出现“找不到类型”错误【英文标题】:“Could not find type” error loading a form in the Designer 【发布时间】:2011-01-01 08:34:14 【问题描述】:这和这个问题完全相同:“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。
【问题讨论】:
我认为您不会得到比其他问题更好的答案。设计器不支持通用控件,因此非通用子类是唯一的答案。是的,为您要使用的每个类型参数创建一个非泛型子类很乏味,但是每次您使用新类型参数创建一个新控件时,您都必须编写一些代码/设置一些设计时属性,所以它是只需几次额外的鼠标点击和键盘敲击。您仍然可以将控件作为参数传递给期望 OwnerDrawnListBox据我所知,Windows 窗体设计器不支持通用控件。保持设计器支持的唯一方法是使用非泛型子类,就像你说的那样。无论如何,任何“修复”都只是一种解决方法。
【讨论】:
以上是关于在设计器中加载表单时出现“找不到类型”错误的主要内容,如果未能解决你的问题,请参考以下文章
VS 2010 设计器在 Windows7 中出现错误“找不到类型 XYZ”。在 XP 中运行良好
C#程序在VS编译器加载时出现找不到方法,无法显示该程序窗体设计器
无法在设计器中加载文件或程序集 System.Componentmodel.Annotations 4.2.0.0