我正在使用位于 CodePlex 上的功能区控件,并按照位于 here 的教程进行操作。一旦我在设计器中添加了引用和正确的代码,当我尝试查看表单时,我会收到此错误:
抛出了“System.ComponentModel.Design.ExceptionCollection”类型的异常
我不知道我做错了什么。有人使用过此控件并知道如何解决此问题吗?
有趣;我刚刚在我自己的表格中遇到了同样的问题;这就是我找到您的相关且最近的问题的方式。
我是这样解决的:
就我而言,事实证明这是我应该适应的东西:
if (!DesignMode)
{
// Do something that should only happen at runtime
}
不要忘记稍后关闭所有这些“抛出”选项。
我的解决方法是:
这感觉非常不正常,我无法确认这是否是我的代码的问题(因为我正在开发一个全新的代码库)或者是否是 VS2012 的错误。如果我发现了,我会回来报告。
由于pilotcam概述的解决方案对我不起作用,我采取了不同的方法:
在我的例子中,它是选项卡控件内的组控件内的用户控件,因此我首先识别选项卡控件,然后是组控件,然后是用户控件。
您可以将用户控件隔离在新表单中以进一步调查。就我而言,这相当容易;我对控件内的大多数函数进行了设计模式检查,以确保仅当控件不处于设计模式时才执行代码。
这解决了我的错误。
我遇到了同样的问题,以上答案都没有解决问题。
最后,清空“bin”文件夹并重建对我有用。
让我再添加两种可能发生此类异常的情况,以及当控件尝试执行设计模式下不允许的操作时:
所有这些情况都会产生相同的极其有意义的错误消息,在这种情况下,Visual Studio 的两次调试将无济于事,所以我最终将我的设计器代码一分为二。
[ReadOnly(true)]
[Browsable(false)]
以上所有属性都对我有用
Pilotcam 出色的故障排除想法不幸的是对我不起作用。
(我的建议源于我在 VS2017 中的一次特殊经历,以 vb.net 4.6.1 形式。)
确保 .Designer.vb 文件中的命名空间尽可能具体。甚至考虑从项目名称开始。编译器和编辑器语法检查器可能会满意地解析您的命名空间,但设计视图可能不会。特别注意控件的实例化行的命名空间(底部的声明行似乎要求不高):
Me.ddlAuthorising_Officer = New ProjectName.FullNamespace.FlatComboBox()
我强烈建议在尝试解决此问题之前确保项目能够编译。一旦解决了其他(不相关的)编译错误,编辑器更有可能帮助即时修复命名空间问题。
请记住这个问题,仅仅因为编译器对 .Designer.* 文件的语法满意,设计视图编辑器很可能不满意。