添加用户控件“枚举器无效”

时间:2010-07-18 13:47:42

标签: wpf visual-studio-2010 user-controls

我正在使用Visual Studio 2010来创建一个小型WPF应用程序。我创建了一个用户控件,我现在正在尝试添加到我的主窗体中。用户控件确实显示在工具箱中,但每次我尝试将控件拖到窗体时都会出现错误:

枚举器无效,因为该集合已更改。

我应该知道什么是错的,而且我无法理解这一点。

4 个答案:

答案 0 :(得分:6)

你在usercontrol的构造函数中有一个错误 - 你正在IEnumerable上使用foreach循环,当循环运行时,IEnumerable被更改,这是不允许的foreach循环。如果您正在操作正在迭代的Collection,请使用for循环。

答案 1 :(得分:0)

这里的问题是你不知道什么代码抛出异常。

WPF对异常很可怕,特别是在构造函数中。该框架坚持捕获并重新抛出一个新的异常,通常是多次,并且很难找到原始的堆栈跟踪。我发现追踪这种错误的最简单方法是告诉Visual Studio在抛出异常时立即停止,而不是等到WPF重新抛出它几次并使细节难以挖掘进行。

我没有在我面前使用Visual Studio 2010,但是在VS2008中如何做到这一点 - 2010可能类似:

  • 转到“调试”菜单>例外...
  • 在“常用运行时语言例外”旁边,选中“已投放”列中的复选框

然后再次调试您的应用。它将停在实际导致问题的线上,并且您将更容易看到正在发生的事情。如果您仍然不确定为什么会抛出异常,您将能够发布代码示例。

答案 2 :(得分:0)

为了使用户控件正常运行,您需要一个带零参数的构造函数。这样,表单设计器就可以以“默认”方式呈现控件。

然后我重载了我的构造函数,以获取我需要的参数来正确运行控件,并且一切都按预期工作。

答案 3 :(得分:0)

你需要:

  1. 删除DLL引用
  2. 添加对您控件的引用
  3. 重建解决方案
  4. 添加您的控件。它应该工作!