当前位置:  开发笔记 > 编程语言 > 正文

在Windows窗体设计器中加载表单时出现"找不到类型"错误

如何解决《在Windows窗体设计器中加载表单时出现"找不到类型"错误》经验,为你挑选了4个好方法。

我有一个.NET 2.0 Windows窗体应用程序,它大量使用该ListView控件.

我已经将ListView类子类化为一个模板化的SortableListView类,因此它可以更明智地表示它如何显示事物并对其进行排序.

不幸的是,这似乎打破了VS2005和2008中的Visual Studio Forms Designer.

该程序编译并运行正常,但当我尝试在设计器中查看拥有的表单时,我得到这些错误:

找不到类型'MyApp.Controls.SortableListView'.请确保引用包含此类型的程序集.如果此类型是开发项目的一部分,请确保已成功构建项目.

没有可用于此错误的堆栈跟踪或错误行信息

变量'listViewImages'要么未声明,要么从未分配过.

在MyApp.Main.Designer.cs行:XYZ列:1

Call stack:
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.Error(IDesignerSerializationManager manager, String exceptionText, String helpLink)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeExpression(IDesignerSerializationManager manager, String name, CodeExpression expression)
at System.ComponentModel.Design.Serialization.CodeDomSerializerBase.DeserializeStatement(IDesignerSerializationManager manager, CodeStatement statement) 

有问题的代码行是它实际添加到表单的位置,而且是

this.imagesTab.Controls.Add( this.listViewImages );

listViewImages声明为

private MyApp.Controls.SortableListView listViewImages;

并在InitializeComponent方法中实例化如下:

this.listViewImages = new MyApp.Controls.SortableListView();

正如前面提到的,程序编译和运行完美,我已经尝试将SortableListView类转换为单独的程序集,因此它可以单独编译,但这没有区别.

我不知道从哪里开始.任何帮助,将不胜感激!



1> Val..:

它发生在我身上,因为x86/x64架构.

由于Visual Studio(开发工具本身)没有x64版本,因此无法将x64控件加载到GUI设计器中.

最好的方法可能是在x86下调整GUI,并在必要时为x64编译.


果然,将我的目标CPU更改为x86为我解决了这个问题.谢谢!
这是微软的完全BS.
我真的想要一个x64版本的Visual Studio.

2> Orion Edward..:

当您添加listview时,是否将其添加到工具箱中,然后将其添加到表单中?

不,我刚刚编辑Main.Designer.cs并将其更改System.Windows.Forms.ListViewMyApp.Controls.SortableListView

怀疑它可能是由于泛型使我真正找到了解决方案.

对于我需要为其创建SortableListView的每个类,我定义了这样的"存根类"

class ImagesListView : SortableListView { }

然后使Main.Designer.cs文件引用这些存根类而不是SortableListView.

它现在有效,万岁!

值得庆幸的是,我能够做到这一点,因为我的所有类型都是预先知道的,而我只是使用它SortableListView作为减少重复代码的方法.



3> lomaxx..:

在过去,我有一个像这样的问题(不一样)我的控件在我的表单的不同命名空间中,即使它在同一个项目中.为了解决它,我不得不添加一个

using My.Other.Namespace;

到设计器顶部的生成代码文件.令人讨厌的是,当设计师重新生成页面时,它一直被吹走.



4> Mark Lakata..:

我也有这个问题,与在*.Designer.cs文件中合并大量SVN更改(与冲突)有关.解决方案是以图形方式打开设计视图,编辑控件(向左移动然后向右移动)并重新设计.*.Designer.cs文件神奇地改变了,下一次编译时警告就消失了.

要清楚,您需要首先修复所有代码合并问题.这只是迫使VS重新加载它们的工作.


这是不正确的.如果您收到任何这些警告,则图形视图会被破坏.什么都不会显示,所以你不能"移动一些东西来神奇地修复它".op正在抱怨,只有一个错误列表,没有gui.
推荐阅读
跟我搞对象吧
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有