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
上,它在VS2010设计器中和运行测试应用程序时都可以正常工作(即显示)testForm1
- 2) 我已经成功进入了
的设计器,在那里我声明并设置了userControl2
的所有值,但是userControl1
在运行时不会显示在userControl1
上。如果我从VS2010设计器中的testForm1
Properties窗口中选择userControl2
,Visual Studio将崩溃userControl1
- 3) 如果有帮助的话,我很乐意发布代码。您喜欢
的代码还是userControl1
的代码?虽然这两个控件都很小,但是仍然有很多代码(特别是因为这个错误可能发生在设计器中,所以我也必须发布它)userControl2
要在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);现在一切都很好!!!