我正在使用Visual Studio 2010来创建一个小型WPF应用程序。我创建了一个用户控件,我现在正在尝试添加到我的主窗体中。用户控件确实显示在工具箱中,但每次我尝试将控件拖到窗体时都会出现错误:
枚举器无效,因为该集合已更改。
我应该知道什么是错的,而且我无法理解这一点。
答案 0 :(得分:6)
你在usercontrol的构造函数中有一个错误 - 你正在IEnumerable
上使用foreach循环,当循环运行时,IEnumerable
被更改,这是不允许的foreach循环。如果您正在操作正在迭代的Collection,请使用for循环。
答案 1 :(得分:0)
这里的问题是你不知道什么代码抛出异常。
WPF对异常很可怕,特别是在构造函数中。该框架坚持捕获并重新抛出一个新的异常,通常是多次,并且很难找到原始的堆栈跟踪。我发现追踪这种错误的最简单方法是告诉Visual Studio在抛出异常时立即停止,而不是等到WPF重新抛出它几次并使细节难以挖掘进行。
我没有在我面前使用Visual Studio 2010,但是在VS2008中如何做到这一点 - 2010可能类似:
然后再次调试您的应用。它将停在实际导致问题的线上,并且您将更容易看到正在发生的事情。如果您仍然不确定为什么会抛出异常,您将能够发布代码示例。
答案 2 :(得分:0)
为了使用户控件正常运行,您需要一个带零参数的构造函数。这样,表单设计器就可以以“默认”方式呈现控件。
然后我重载了我的构造函数,以获取我需要的参数来正确运行控件,并且一切都按预期工作。
答案 3 :(得分:0)
你需要: