1

当我在我的 MainForm 上移动某些元素时(编辑:将其缩小到对具有 SuspendLayout、ResumeLayout 和 PerformLayout 的控件的大小/位置更改,并且仅当使用鼠标进行更改时 - 直接编辑工作正常)在设计器中,VS 崩溃并告诉我它已停止工作。当我使用第二个实例进行调试时,调试器在 devenv.exe 中给了我一个未处理的 NullReferenceException。问题突然突然出现并且似乎很抗拒 - 我修复了 VS,重新安装了 .Net 框架(4.5 SDK),重新启动机器,以管理员身份运行 VS 等。我使用的是 Windows 8 最新版本,我使用 Visual工作室 2012 高级版。

我使用的唯一第三方插件是 git-ext。

有没有人遇到过这样的错误?直到今天,我还相信像这样的东西更多的是 Java/Eclipse 世界的主题......提前感谢任何提示,我在这里有点绝望:))我当然会提供任何需要的额外信息!干杯

编辑

这是我在使用 VS 的第二个实例进行调试时遇到的异常:

System.NullReferenceException was unhandled


HResult=-2147467261
  Message=Object reference not set to an instance of an object.
  Source=System.Design
  StackTrace:
       at System.Windows.Forms.Design.Behavior.BehaviorService.AdornerWindow.MouseHook.MouseHookProc(Int32 nCode, IntPtr wparam, IntPtr lparam)
  InnerException: 

按照凯尔的指示(非常感谢您的输入!!),到目前为止,我尝试了以下操作:

  1. 重新启动进入安全模式 - 没有变化
  2. 创建新用户帐户 - 无变化
  3. 删除所有加载项并在安全模式下运行 - 没有变化
  4. 重置设置 - 没有变化
  5. 创建一个新项目(带有一些控件的简单表单) - 一切正常,没有崩溃,所以看起来问题与项目有关
  6. 修复 VS - 没有变化

编辑 2

当我添加一个新的 GroupBox 容器时,它也会崩溃,只要我拖动它、更改它的大小或删除它

编辑 3

按照 Avi 的说明,我能够解决问题 - 这似乎是由 VS2012 中的错误引起的,我有一个 GroupBox 控件隐藏在其他一些控件后面,一旦我删除它,错误就消失了。

4

2 回答 2

2

请尝试以下解决方法:

  1. 如果我们将操作系统重新启动到安全模式,我们有问题吗?这有助于确定是否有任何其他应用程序干扰了 Visual Studio。请注意,某些功能(如 IIS)在安全模式下不可用。请检查这是否适用。除了安全模式,您还可以尝试“干净启动”:http: //support.microsoft.com/kb/310353

  2. 如果我们创建一个新的用户帐户,我们有问题吗?这可以帮助隔离与用户配置文件损坏相关的原因。

  3. 如果我们禁用加载项(例如“工具”|“加载项管理器”)并运行“devenv.exe /safemode”,我们还有问题吗?这可以消除第三方加载项导致问题的可能性。

  4. 如果我们使用“devenv.exe /resetsettings”,能解决问题吗?它恢复 Visual Studio 默认设置。

  5. 如果我们创建一个新项目,我们有问题吗?有时损坏的项目设置可能会导致问题。这些是特定于项目的。

  6. 如果问题仍然存在,我们可以使用 Visual Studio 安装向导(通过控制面板)来修复 Visual Studio。它可以将 Visual Studio 安装恢复到其原始状态。

另外,请参考下面的连接链接,看看是否遇到同样的问题。

http://connect.microsoft.com/VisualStudio/feedback/details/672192/visual-studio-keeps-crashing-for-ac-windows-form-application-after-opening-a-source-file

于 2013-08-15T06:18:25.990 回答
1

这是有关此问题的评论/聊天的摘要:

为了追查问题,我会尝试:

  1. 检查正在移动的元素。
  2. 他们是否有任何事件注册到他们移动/调整大小的事件中?
  3. 如果是这样,异常是否发生在事件处理程序中?
  4. 如果不是,错误是否发生在控件/表单的构造函数中?

如果您已找到异常的来源,请尝试使用 try-catch 子句对其进行包装。
请记住,在设计时,设计器会模拟对构造函数的调用,以“构建”您的设计器。
因此,使用 try-catch 子句包装对的调用,应该会在文件InitializeComponent中获取异常。designers

于 2013-08-15T10:37:48.600 回答