2008-10-31 103 views
2

我在紧凑的框架窗体上收到此错误。Visual Studio设计师错误

“代码生成属性‘inputControl’失败错误是:“对象引用不设置到对象的实例。”

任何人有任何想法,为什么?它刚刚开始,之前从未成为问题。

回答

2

看看'inputControl'在哪里被访问,并确保它被正确实例化。

+0

雅我刚刚发现它是在一个自定义的用户控件,它是。就像我说的那样刚刚开始发生。所以我猜测它没有被实例化,或者从来没有给过我一个错误。 – nportelli 2008-10-31 19:16:06

3

当用户控件不会加载到Visual Studio设计器中时,这是您需要执行的操作。这些指令适用于vb.net项目,但c#应该类似。此外,在关闭所有打开的窗口之前(或者至少是您正在使用的控件的源文件和设计器文件)。

最后一件事。你应该做的第一件事是确保重新启动visual studio不能解决问题。如果没有,你可以尝试下面的步骤。这些说明假设错误的用户控件位于visual studio中的控件库项目中。如果不是的话,你应该能够调整方向以使其工作,但是当控制器在自己的项目中时,它更容易。

执行以下操作:

  1. 将该控件库中的启动项目。
  2. 打开控件库项目的属性并单击调试选项卡。
  3. 在开始操作下单击开始外部程序选项并浏览到Visual Studio可执行文件。

注意:这意味着当您运行您的解决方案时,它将启动另一个Visual Studio实例,而不是实际运行您的解决方案。视觉研究的第一实例(INSTANCE_1)将在运行时“托管”视觉工作室的第二个实例(INSTANCE_2)。

  1. 运行您的解决方案。 INSTANCE_2将加载。
  2. 切换回INSTANCE_1。
  3. 在INSTANCE_1中击中CTRL-ALT-E。这将打开例外对话框。选中Common Language Runtime Exceptions旁边的THROWN列复选框。

注意:这将确保INSTANCE_1将在即使是在try块击中任何运行时错误中断。

  1. 切换到INSTANCE_2。在解决方案资源管理器中双击以打开错误的用户控件。

您应该发现INSTANCE_1的Visual Studio应该停止在导致设计器无法加载控件的代码行。修复代码(这通常意味着在引用对象属性之前测试IsNot Nothing ...但可能意味着其他事情)。

另外,有时我发现控件将在INSTANCE_2中加载,而不是在INSTANCE_1上打错。在那种情况下,停止调试...关闭INSTANCE_2。保存/重新启动INSTANCE_1,您的问题通常会消失。

教训是这样的。用户控件必须能够加载/引用所有对象及其成员,以便将其加载到设计器中。因此,对于将放置到其他容器上的用户控件,我通常会设计事件来通知父代,而不是尝试将对象推入子控件。

希望这有助于未来在这个老问题上的参考。

Seth