【问题标题】:How do I resync the Visual Studio 2008 Windows Forms Designer?如何重新同步 Visual Studio 2008 Windows 窗体设计器?
【发布时间】:2011-06-07 01:43:12
【问题描述】:

我有一个 C# Windows 窗体项目,当我打开该项目时,设计器视图突然只显示一个空白窗体。不确定是什么原因造成的,但自从我在工具箱中添加了第 3 方控件后,它似乎已经发生了。设计器代码仍然存在,当我运行应用程序时,所有控件都工作正常。任何人都知道如何重新同步表单设计器,以便正确显示控件。这是一个相对简单的形式,我可以很容易地复制它,但我对它发生在更复杂的事情上感到有点紧张。

谢谢。

【问题讨论】:

  • 删除表单构造函数中的所有 try/catch 语句。
  • 感谢 Hans,但表单构造函数只包含标准 InitializeArea()
  • 刚刚创建了一个空白表单项目,并且在 InitializeComponents() 中生成的 3 行中(对不起,这意味着不是上面的 InitializeArea()),缺少这一行:this.components = new System.ComponentModel。容器();
  • 糟糕,回车太快了!无论如何,我添加了它并没有任何区别,所以我将整个 InitializeComponents() + 控制变量复制到空白表单项目中,嘿,设计师更新了所有控件。所以我尝试在我现有的项目上做相反的事情,即将它清空然后恢复,但仍然得到一个空白表格。无论如何,至少我可以将代码复制到空白项目并从那里继续 :)
  • @rob:如果您可以将您在设计器生成的代码文件中找到的内容复制并粘贴到新表单中并且一切都按预期工作,那么问题出在表单的其他地方。可能是构造函数。可以发一下代码吗?

标签: c# visual-studio winforms visual-studio-2008


【解决方案1】:

第 3 方控件肯定会破坏设计器。请参阅my question,了解我在使用 Document Outline 时遇到的问题,这些问题是由错误的第 3 方控制引起的。

我建议您在项目中搜索对潜在违规控件的引用。如果您尝试在某个时候添加控件,但添加失败,则可能会留下一些现在搞砸设计器的残余物。确保您也在搜索 .designer 文件 - 这是控件通常被实例化的地方。

如果这不起作用,我会尝试从 Visual Studio 中卸载该控件。

【讨论】:

    【解决方案2】:

    Form 类公开了一个名为 DesignMode 的属性,它告诉你是在 VS 中还是在运行应用程序。 通常我在表单中这样做是为了避免 VS 废话:

    public MyForm()
    {
       InitializeComponents();
       if (this.DesignMode)
       {
          return;
       }
    }
    

    当然,为了看到差异,您需要重新构建项目并关闭所有 VS 窗口

    【讨论】:

    • 这到底是做什么的?
    • 如果您处于设计阶段 (VIsual Studio),则使用此代码不会执行任何其他代码。因此,如果
    • DesignMode 在构造函数中没有作用;有用的代码应该在 Load 或 Shown 事件中
    【解决方案3】:

    请参阅我对问题的评论,但简而言之,*.Designer.cs 中的 InitializeComponent() 方法不得重命名,否则设计器无法显示您的表单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-12-09
      • 1970-01-01
      • 2016-10-30
      • 2012-07-17
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多