C# 每当我将UserControl添加到表单时,它就会崩溃Visual Studio

C# 每当我将UserControl添加到表单时,它就会崩溃Visual Studio,c#,winforms,visual-studio-2010,user-controls,C#,Winforms,Visual Studio 2010,User Controls,我已经写了一个小的,叫做userControl1,它似乎按照我想要的方式工作 在VisualStudio2010的设计器中,我可以从工具栏中拖动userControl1,并将其放到一个我将调用testForm1的Windows窗体上。我可以连接userControl1,它可以正常工作 然而,userControl1的目的是能够在另一个系统中使用它,我们称之为userControl2 在Visual Studio 2010的设计器中,如果我从工具栏中拖动userControl1并将其放到userC

我已经写了一个小的,叫做
userControl1
,它似乎按照我想要的方式工作

在VisualStudio2010的设计器中,我可以从工具栏中拖动
userControl1
,并将其放到一个我将调用
testForm1
的Windows窗体上。我可以连接
userControl1
,它可以正常工作

然而,
userControl1
的目的是能够在另一个系统中使用它,我们称之为
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设计器中和运行测试应用程序时都可以正常工作(即显示)

  • 2) 我已经成功进入了
    userControl2
    的设计器,在那里我声明并设置了
    userControl1
    的所有值,但是
    userControl1
    在运行时不会显示在
    testForm1
    上。如果我从VS2010设计器中的
    userControl2
    Properties窗口中选择
    userControl1
    ,Visual Studio将崩溃

  • 3) 如果有帮助的话,我很乐意发布代码。您喜欢
    userControl1
    的代码还是
    userControl2
    的代码?虽然这两个控件都很小,但是仍然有很多代码(特别是因为这个错误可能发生在设计器中,所以我也必须发布它)


您控件的构造函数中可能有某种东西试图访问另一个不可用的东西,或者正在创建IDE无法捕获的异常(StackOverflow、OutOfMemory等)

这似乎有助于解决问题,因此我将其作为一个答案发布


要在Visual Studio designer中使用控件时调试控件,请运行两个Visual Studio实例并在两个实例中打开项目。然后,在其中一个实例中,使用附加到进程…选项并附加到第二个实例以调试它(devenv.exe进程)。这样,您应该能够看到异常情况。

运行Visual studio的两个实例,在两个实例中打开此项目,并在其中一个实例中使用“附加到进程…”选项对第二个实例进行调试(devenv.exe进程)。然后您应该能够看到异常是什么。UserControl中的一些代码也在设计时运行。这些代码有一个bug,它会触发StackOverflowException。这是一个非常致命的错误,也会导致VS关闭。查找递归属性设置器/获取器,如果找不到,请注释掉这些内容。你们很棒!就像Hans po我想,我的代码中必须有新的内容。因此,使用Lukasz的VS附加到VS中,我找到了为高度和宽度声明新变量的位置,这样我就可以设置容器属性,而不是处理
Resize
事件。我已经发布了我的建议作为答案。我很高兴它有帮助:)。谢谢大家!我也遇到了同样的问题,这是由于我的用户控件的属性返回了它自己的值的无限循环造成的!如果卢卡斯回来把他的评论作为回答,我会把它标记为解决方案。如果他没有,欢迎您通过添加他的评论来更新您的帖子,我会将您的评论标记为答案;对我来说,运行Visual Studio 2012 Express for Desktop时,如果我没记错的话,它是WDExpress.exe。这种方法比我预期的简单得多。我的问题是版本控制问题,引用了从嵌套UserControl的加载事件调用的第三方控件。我有一个类似的问题-我的UserControl在加载时会冻结设计器。结果是一个参数被设置为null,然后加载了我的实体框架上下文,它等待一个标志来表示另一个进程,这是应用程序启动的一部分,在设计模式下永远不会发生。我使用您的方法进行了检查,并意识到在检查参数值时缺少“not”。谢谢。卢卡斯M!!!!你帮了我很多!!!我重写了OnPrint方法并调用了this.OnPrint(e),这导致了堆栈溢出异常!谢谢I根据基数进行更改。OnPrint(e);现在一切都很好!!!