【问题标题】:Visual Studio Design View - form is blankVisual Studio 设计视图 - 表单为空白
【发布时间】:2015-11-13 21:22:15
【问题描述】:

我有一个有两种形式的 C# 项目。一切都编译得很好。当我运行该项目时,所有表单都按预期绘制。

几天前,所有表单的 DesignView 开始只显示一个空白表单,就像您在新的 Windows.Forms 项目中看到的一样。

我遇到了几个关于 SO 的类似问题,这里是这些问题的 cmets:

  1. 我的项目没有使用第 3 方库(除了 htmlAgilityPack,它不会在其他 Windows.Forms C# 项目中导致此问题)
  2. 我已经检查了 InitializeComponent 函数在每个表单的项目中只有一次
  3. 当我创建一个新项目并添加一个现有表单(即我有问题的项目表单之一)时,设计查看器按预期工作 - 因此我怀疑我的表单的 .cs、.Designer.cs 和 .resx 文件没关系。

我可能在项目设置或其他地方搞砸了什么?

编辑

上面的第三点具有误导性 - 我也尝试为第二种形式创建一个新项目,但问题仍然存在。可以在here 找到显示问题的最少源代码。

【问题讨论】:

  • 你有调用InitializeComponent的无参数构造函数吗?
  • @stuartd:是的,两种形式都只有无参数的构造函数。每次调用InitializeComponent()
  • 请张贴一个没有/空白设计视图的表单的来源。
  • @PilgerstorferFranz:我会很高兴,但具体如何?当我将 .cs、.design.cs 和 .resx 文件移动到新项目时,一切正常。
  • 尝试从您的 RCS 进行新的(干净的)检出并从头开始重新编译?

标签: c# winforms visual-studio-2012


【解决方案1】:

您的项目文件已失效。

表单的有效项目条目如下所示:

<Compile Include="Form1.cs">
  <SubType>Form</SubType>
</Compile>
<Compile Include="Form1.Designer.cs">
  <DependentUpon>Form1.cs</DependentUpon>
</Compile>

虽然您的缺少 DependentUpon 行 - 这就是代码和设计器文件单独出现在项目中而不是连接的原因:

<Compile Include="mainForm.cs">
  <SubType>Form</SubType>
</Compile>
<Compile Include="mainForm.Designer.cs" />

如果您添加缺少的行,则表单在设计模式下正确显示:

<Compile Include="mainForm.cs">
  <SubType>Form</SubType>
</Compile>
<Compile Include="mainForm.Designer.cs">
  <DependentUpon>mainForm.cs</DependentUpon>
</Compile>

并整理资源文件:

<EmbeddedResource Include="mainForm.resx">
  <DependentUpon>mainform.cs</DependentUpon>
</EmbeddedResource>

为了解决这个问题,您可以在编辑器中编辑 csproj,或者在 Visual Studio 中进行:

  1. 备份文件
  2. 右键单击项目并选择“卸载项目”
  3. 右键单击卸载的项目并选择“编辑 [ProjectName].csproj”
  4. 进行更改,然后关闭文件。
  5. 右键单击已卸载的项目并选择“重新加载项目”

【讨论】:

  • 非常感谢。我发布的源代码是一个从头开始制作的项目,我刚刚添加了三个源文件。你知道项目是如何失效的吗?
  • 这让我笑了:) 非常感谢 stuartd。
【解决方案2】:

我通过删除与该表单关联的所有文件解决了这个问题

  • 文件 -> 右键单击​​ -> 从项目中排除

并将文件手动添加回项目

  • 项目 -> 添加 -> 现有项目...

【讨论】:

    【解决方案3】:

    对于那些四处寻找却找不到安慰的人,我有另一个解决方案。我继承的项目代码质量很差,之前的开发人员在他的代码中混合了大小写,因为“它不区分大小写,所以没关系”

    所以,虽然 PopulateRevs 实际上与 Visual Basic 中的 POpulateREvs 相同,但这种懒惰会导致问题。也就是说:

    <Compile Include="Inventory\Partmaster.Designer.Vb">
      <DependentUpon>Partmaster.vb</DependentUpon>
    </Compile>
    <Compile Include="Inventory\Partmaster.vb">
      <SubType>Form</SubType>
    </Compile>
    

    我在查看其他不起作用的解决方案时碰巧在.vbproj 文件中看到了这一点。我碰巧将Partmaster.Designer.Vb 更改为Partmaster.Designer.vb(小写扩展名)并且它起作用了。

    因此,作为另一种解决方案,虽然 Visual Basic 不区分大小写,但它看起来像 .vbproj 文件。如果你被难住了,另一件事要确保你的文件名和.proj 文件共享相同的大小写。

    (我知道这被标记为C#,但我在 C# 中对此进行了测试,混合大小写也会导致问题。)

    【讨论】:

      【解决方案4】:

      另一种可能性。我有一组表格都是从一个基本表格继承而来的。我添加了位置保存/恢复代码——一切都是空白的。

      在搞砸了一个小时并且找不到任何错误之后,它突然开始在设计器中抛出空引用异常,而不仅仅是空白。呃——保存/恢复代码使用了一个设计时不存在的对象。

      为什么它沉默不语,然后突然开始尖叫,我不知道。

      【讨论】:

        【解决方案5】:

        另一种可能性:我有一个超类 Form,我的所有表单都派生自它。我已经在我的一个 form.cs 文件中定义了这个超类,位于与该文件对应的表单的(部分)类定义之上。这似乎让 Visual Studio 感到困惑,它显示的是我的超类的内容(即空表单),而不是与文件对应的表单的内容。解决方案是将超类的定义移动到另一个不是表单设计器文件的文件中。

        【讨论】:

          【解决方案6】:

          另一种可能: 设计者似乎试图设计 .h 文件中的第一个类,不管它的名称是什么。 我只是在实际表单类之前有一个空的前向引用类声明,它尝试使用它。

          【讨论】:

            【解决方案7】:

            如果启动窗体为空白且没有编译器错误。检查您的 Program.cs 文件是否正在运行正确的表单,否则它将运行没有上下文的表单并显示为空白。

            在这种情况下,Program.cs 文件应如下所示:

            using System;
            using System.Windows.Forms;
            
            namespace Form_Test
            {
                static class Program
                {
                    /// <summary>
                    /// The main entry point for the application.
                    /// </summary>
                    [STAThread]
                    static void Main()
                    {
                        Application.EnableVisualStyles();
                        Application.SetCompatibleTextRenderingDefault(false);
                        Application.Run(new StartForm());
                    }
                }
            }
            

            注意 Application.Run(new StartForm());需要指定正确。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2019-11-13
              • 2019-02-23
              • 1970-01-01
              • 1970-01-01
              • 2019-02-11
              • 2010-12-30
              • 2011-01-14
              • 1970-01-01
              相关资源
              最近更新 更多