Microsoft"WinForms Series 1:Graphics Device"出现错误

Fra*_*zzi 8 c# xna winforms

我对这个样本疑问.我刚下载并运行它(Visual Studio 2010).我没有触及任何东西.在此输入图像描述

对不起语言,它是意大利语.它从上到下说:

  • 为了避免在加载设计器窗口之前丢失信息,有必要解决这些错误:
  • 无法将设计器Windows可视化为文件,因为无法设计类.设计器实用程序已经检查了这些类:SpinningTriangleControl --- 无法加载其基类 "WinFormsGraphicsDevice.GraphicsDeviceControl".验证是否存在对程序集的引用以及是否已生成所有项目.
  • 下面说的一样

注意:

  • 如果我编译并运行,它的工作原理.
  • 在ide的工具栏中,有时候(我什么时候不知道),有两个用样本创建的控件,SpinningTriangleControl和SpriteFont; 有时他们会消失.发生这种情况时,控件也会从项目的MainWindow表单中删除!
  • 我不知道它是否重要,但我注意到控件经常消失并从xxx.designer.cs我添加一些新控件(例如toolstripmenu等)时删除自己,或者我为一些控件添加一些新的事件处理程序.

我真的不明白发生了什么.

由JT编辑:repro在这里:sdrv.ms/1kIhI5o

Repro步骤:

打开解决方案
选择flowLayoutPanel1控件
运行应用程序
停止应用程序
现在尝试选择gameWrapper!

结果:
无法再选择gameWrapper控件,它甚至不会显示在表单控件的Property Windows下拉列表中!

Sco*_*eep 1

我在一些场景中见过这种情况。

1) 项目获得对其自身的引用。

如果项目 A 中有一个用户控件,并使用设计将用户控件添加到项目 A 中的窗体中,则 Visual Studio 将添加一个自引用,这将搞砸设计器。

2) 为视觉元素创建一个抽象基类。

由于抽象类无法实例化,因此设计器将无法创建实例以在设计器中呈现。

3)设计模式错误

如果您使用 DesignMode 属性来确定 UserControls 是否应在诸如 Load() 之类的事件中加载数据,则您需要知道,如果嵌套控件深度超过一层,则 DesignMode 将中断。您可以通过关闭 LicenseManager.UsageMode 创建自己的设计模式变量来解决此问题。