【问题标题】:Visual Studio forms designerVisual Studio 表单设计器
【发布时间】:2010-12-30 12:33:43
【问题描述】:

我有一个烦人的问题。有时 Visual Studio 不会在解决方案资源管理器中为我的某些表单显示选项“视图设计器”。它不显示设计模式错误,只是不显示使用设计器的选项。我无法弄清楚发生这种情况的确切情况.. 是否有人对导致解决方案资源管理器这种行为的原因有一些想法?

【问题讨论】:

  • 什么版本的VS?如果是 VS 2005,请确保您运行的是最新的 SP。
  • 您是否尝试使用视觉继承来设计任何表单?如果您打开代码编辑器并按 F7 会发生什么?
  • 这仅适用于 VS 理解为表单的表单。
  • @SLaks:是的,就是这个,我几乎从不使用热键返回设计器视图。

标签: c# visual-studio winforms


【解决方案1】:

在 Visual Studio 2017 中遇到同样的问题

我找到了以下解决方案:

  1. (根本原因):在 form1.cs 文件顶部添加了自定义类
  2. (症状):现在缺少设计视图(右键单击解决方案资源管理器中的表单类,“视图设计器”未显示)
  3. (解决方案):将 Form 类移回文件顶部。 “视图设计器”现在正确显示

执行 user2205930 推荐的解决方法可能会让您将自定义类保持在表单顶部。

【讨论】:

    【解决方案2】:

    如果文件中有多个类(真丢脸),请确保 Form 类是文件中的第一个类。 (别问我怎么知道的。)

    【讨论】:

      【解决方案3】:

      如果源文件中的第一个类不是表单的“部分类”,则会发生这种情况。在这种情况下,解决方案资源管理器中的文件类型图标最初将显示为表单,但 VS 在加载文件后会将其更改为“C#”代码图标,并从弹出菜单中删除“查看设计器”选项。至少在 VS2015 中,这可以通过注释掉有问题的代码并保存文件来解决,此时 VS 将恢复预期的表单图标。

      【讨论】:

      • 这绝对是我的问题。好电话。
      【解决方案4】:

      我也遇到过这个问题,我已经修改了 .csproj 文件来修复它。 在我的 .csproj 文件中,我修改了这行代码:

      <Compile Include="FormName.cs" />
      

      使用此代码:

      <Compile Include="FormName.cs">
          <SubType>Form</SubType>
      </Compile>
      

      【讨论】:

        【解决方案5】:

        我遇到了这个问题并找到了解决方案。不知何故,我的 .csproj 文件已损坏并且在 XML 中缺少一个子项。例如,我有一个名为 MyControl.cs 的 UserControl,我在 .csproj 中损坏的 XML 看起来像:

        <Compile Include="MyControl.cs" />
        

        我修复了它,现在显示为:

        <Compile Include="MyControl.cs">
           <SubKey>UserControl</SubKey>
        </Compile>
        

        MyControl.cs 看起来像(这只是为了完整性):

        public partial class MyControl : UserControl
        {
        }
        

        进行更改并保存后,Visual Studios 现在可以正确读取我的控件并加载设计器。我不知道这个文件是如何损坏的。

        【讨论】:

          【解决方案6】:

          您的表单可能继承了自定义表单类。

          有时 VS 可能没有意识到自定义类继承了Form。 (例如,如果解决方案没有构建)。

          尝试重建解决方案。

          如果您想要更准确的答案,请提供更多详细信息。

          【讨论】:

          • 是的,这似乎是问题所在。将基类型更改为 Form,然后返回 MyCustomDialog 会有所帮助,但是有没有办法让 VS 分析我的表单是否是表单?
          • 更奇怪的是,MyCustomDialog 所在的库在构建过程中很长时间都没有失败。
          • 尝试清理并重建解决方案,当我有它时它总是用来解决这个问题。
          • 没有成功。迄今为止最简单的解决方案是将表单的基本类型更改为 Form 然后再返回。
          • 终于找到了确切的原因。我们的项目在 Source Safe 下,因此通常所有文件都是只读的。当 Visual Studio (VS) 编译项目时,它会以某种方式分析哪些文件代表表单,因此应该使用表单设计器打开。为了表明它自己,VS 在 .csproj 文件中添加了一些标签。但是如果 .csproj 文件是只读的(就像我的情况一样),VS 无法修改它,并且解决方案浏览器仍然不知道它是一个表单。解决方案是使 .csproj 文件不是只读文件并重建所有内容。
          【解决方案7】:

          我以前在 VS 2003 中经常遇到这个问题。每次发生这种情况时,我都会在记事本中打开 .csproj 文件并将类的名称改回“Form”。

          【讨论】:

            猜你喜欢
            • 2019-02-23
            • 1970-01-01
            • 2011-01-14
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2022-10-13
            • 2014-01-21
            相关资源
            最近更新 更多