【发布时间】:2012-09-05 18:40:06
【问题描述】:
我写了一个小的System.Windows.Forms.UserControl,叫它userControl1,它似乎按我想要的方式工作。
在 Visual Studio 2010 的设计器中,我可以将 userControl1 从工具栏中拖放到我将调用 testForm1 的 Windows 窗体上。我可以连接userControl1,它可以正常工作。
但是,userControl1 的目的是能够在另一个UserControl 中使用它,我们称之为userControl2。
在 Visual Studio 2010 的设计器中,如果我将 userControl1 从工具栏中拖放到 userControl2,Visual Studio 2010 将崩溃,除了正在重新启动之外没有任何消息。
与此同时,事件查看器中记录了一个应用程序错误,事件 ID 为 1000:
Faulting application name: devenv.exe, version: 10.0.40219.1, time stamp: 0x4d5f2a73
Faulting module name: unknown, version: 0.0.0.0, time stamp: 0x00000000
Exception code: 0xc00000fd
Fault offset: 0x0965f816
Faulting process id: 0x1580
Faulting application start time: 0x01cd90f84338e443
Faulting application path: C:\Program Files (x86)\Microsoft Visual Studio 10.0\Common7\IDE\devenv.exe
Faulting module path: unknown
Report Id: 49ddcedf-fcf8-11e1-8016-00248103a942
如何尝试调试此错误?我应该查看userControl1 或userControl2 中的内容吗?
一些注意事项:
-
1) 我还可以将
userControl2从工具栏中拖到testForm1上,它在 VS2010 Designer 和运行测试应用程序时都可以正常工作(即显示)。 2) 我已成功进入
userControl2的设计器,我在其中声明并设置了userControl1的所有值,但userControl1在运行时不会显示在testForm1上。如果我在 VS2010 设计器的userControl2属性窗口中选择userControl1,Visual Studio 将崩溃。3) 如果有帮助,我很乐意发布代码。您更喜欢
userControl1或userControl2的代码吗?虽然这两个控件都很小,但仍然有很多代码(特别是因为这个错误很可能发生在 Designer 中,所以我也必须发布它。
【问题讨论】:
-
运行两个 Visual Studio 实例,在两个实例中打开此项目,并在其中一个实例中使用 Attach to process... 选项第二个实例来调试它(devenv.exe 进程)。然后您应该能够看到异常是什么。
-
UserControl 中的一些代码也在设计时运行。该代码有一个错误,它会触发 StackOverflowException。一个非常致命的错误,这也使 VS 下降。寻找递归属性设置器/获取器,如果找不到,请注释掉。
-
你们太棒了!就像 Hans 指出的那样,我必须在我的代码中添加新的东西。因此,使用附加到 VS 的 Lukasz 的 VS,我发现我在哪里为 Height 和 Width 声明了新变量,以便我可以设置容器属性而不是处理
Resize事件。 -
我已经发布了我的建议作为答案。我很高兴它有帮助:)。
-
谢谢大家!我遇到了同样的问题,这是由于我的用户控件属性的无限循环返回了它自己的值!
标签: c# winforms visual-studio-2010 user-controls