【问题标题】:How to easily duplicate a Windows Form in Visual Studio?如何在 Visual Studio 中轻松复制 Windows 窗体?
【发布时间】:2010-11-19 02:37:02
【问题描述】:

如何在 Visual Studio 中轻松复制 C#/VB 表单?如果我在解决方案资源管理器中复制并粘贴,它会在内部使用相同的类并搞砸。你怎么做呢?

【问题讨论】:

标签: winforms visual-studio


【解决方案1】:

只需重命名设计器引用的类。

但更好的解决方案是在运行时创建同一类的新实例。

或者更好的是,创建一个可以继承各种实现的父表单。

【讨论】:

    【解决方案2】:

    我通常在 Windows 资源管理器中复制文件,在记事本/写字板中打开它们,然后只更改顶部提到的类名。将这些文件包含在您的项目中,您就可以开始了。

    【讨论】:

    • 谢谢。这是最实用的,因为我没有“基类”功能,只有很少的“模板”之类的自定义功能,我不想再次手动执行。
    • C#/VB.NET 让您可以像继承任何其他类一样继承表单,所以如果您只有一个通用模板...
    • 像魅力一样工作....VS是一个PITA,他们应该在VS中进行复制,感谢您的解决方案!!!!
    【解决方案3】:

    首先,如果您要使用剪切和粘贴复制大量表单,请考虑为您的表单(或您的表单类别)使用一个通用基类,以实现共享/通用功能或外观元素。您还可以为满足您需求的新表单创建模板,并从该模板创建新表单。

    就我个人而言,我只是剪切和粘贴,然后修复任何挥之不去的名称错误。由于我抽象出通用功能,因此我没有感到足够的痛苦来寻找更好的方法;-)

    【讨论】:

      【解决方案4】:

      继承表单!

      【讨论】:

      • 我 +1 纯粹是因为它是最好的解决方案。它是否正确?它肯定会正常工作吗?
      • 是的,有一个基本表单,基本表单上的所有内容都会以继承它的表单出现。
      • @Jon Inheriting 不是一个实用的解决方案,因为它会阻止您直接编辑表单内的继承控件..
      【解决方案5】:
      1. 复制并粘贴表单。
      2. 重命名粘贴的表单 .cs 以匹配新的表单类名称。这应该会自动重命名其他相关文件。
      3. 打开 .cs 文件。更改类名以及构造函数和析构函数的名称。
      4. 打开 .Designer.cs 文件并更改类名。

      额外积分:

      1. 考虑将表单中的通用功能抽象为通用表单或控件。

      【讨论】:

      • 不需要更改类名,至少如果您使用 VB 2012(刚刚测试过;))
      • 这在 VS 2010 和 c# 上对我很有效。另外,如果我们上面有 datagridview 控件,我建议在新创建的表单的 Designer.cs 中有一个峰值,因为有时它可以重命名我们的列对象名称,但总的来说它真的很漂亮!
      【解决方案6】:
      1. 为您的项目添加一个子文件夹。
      2. 右键单击子文件夹,然后单击添加现有项目。
      3. 浏览到要复制的表单,然后选择其 .cs 文件。这将复制子文件夹中的原始表单(部分和 resx 以及全部)。该名称不会与原始名称冲突,因为子文件夹将包含在其命名空间中。
      4. 右键单击 .cs 文件,单击重构 |重命名并输入新名称。这还将为您重命名部分和 resx。

      我通常不喜欢在记事本或其他任何东西中打开文件的方法,因为我一直认为像这样的常见任务应该在 Visual Studio 中有内置的方法。在这种情况下,有。

      【讨论】:

      • 这对我根本不起作用.....它保留了原始名称空间,然后给出了一个奇怪的错误 xxxx.MainForm.resources 在“资源”参数中被指定了不止一次. Resources 参数不支持重复项
      【解决方案7】:

      1.为您的项目添加一个新文件夹

      2.把表格复制进去

      3.在属性中更改名称以及更改文件名

      4.检查每个表单的类名(它们不应该相同)

      【讨论】:

        【解决方案8】:

        (从我的另一篇文章中复制了这个答案,以防有人在这里寻找这个解决方案)

        使用 VS2013 刚刚对此进行了测试,它看起来可靠且一致。这与上面的一些 cmets 类似,但增加了另一种更快的方法。

        (1st)在 Windows 文件资源管理器中突出显示并复制所有 3 个表单文件(.vb 或 .cs、.designer、.resx)

        (2nd) 这可以通过两种方式完成:

        (2a-1) 在文件资源管理器中,将 3 个文件与其他表单一起粘贴到项目文件夹中

        (2a-2) 在 VS 解决方案资源管理器中,打开“显示所有文件”,右键单击粘贴的表单并选择“包含在项目中”。它应该可以在没有其他更改的情况下工作。

        或者,我认为更好:

        (2b-1) 在 VS 中,单击解决方案资源管理器并使用 Control-C 粘贴。 (由于某种原因,解决方案资源管理器中的右键单击上下文菜单可能不会显示粘贴选项,但它可以通过键盘工作。)此方法直接将表单添加到项目中,而不必像上面那样“包含在项目中”。使用此方法,您可以在一个步骤中一次添加任意数量的表单(每个表单都添加 3 个文件)。

        【讨论】:

          【解决方案9】:

          真的很简单。 “在设计模式 FORM”(form1.cs[Design])复制整个表单“ctrl A”然后按 ctrl C。一次所有对象。然后在项目中添加一个新的 windows 窗体。将表单的大小更改为您想要的大小,然后粘贴 ctrl V 所有新对象将被复制到新表单。当它们都仍然被选中时,双击任何对象。 NOT THE FORM!!!..... 这将在 Form 端创建与您刚刚粘贴的对象匹配的代码。如果没有,您可以双击每个对象,它会一次创建一个代码。我使用文本框区域双击,它几乎每次都有效。 我每天都使用这种方法,效果很好。

          【讨论】:

          • 不,这会复制对象,而不是表单。
          【解决方案10】:
          • 保存所有项目
          • 在解决方案资源管理器 (SE) 中单击鼠标右键,“复制”
          • 右键单击SE中的项目名称(这是第一行),“粘贴”。它将创建一个“......vb 副本”表单
          • 在 SE 中右键单击此新表单“查看代码”,并将其类名更改为您要用于该表单的名称
          • 左键单击 SE 中的新表单并将其名称改写为您在类名中使用的那个(最后是 .vb)
          • 构建 - 如果没有错误,你就赢了! :)

          【讨论】:

            【解决方案11】:

            自 vb6 以来,我一直在使用另一种复制表单的方式。

            1. 文件菜单/SE - 将 CurrentForm.cs 保存为 - NewForm.cs
            2. 在“属性”窗口中将其名称更改为 NewForm。
            3. 在解决方案资源管理器中 - 添加现有项 - CurrentForm.cs
            4. 通常在 MDI 表单中(引用 CurrentForm) - CurrentFormToolStripMenuItem_Click 事件 - 将引用更改回 CurrentForm(在步骤 1 中自动更改为 NewForm)。

            欢迎参加。

            【讨论】:

            • 谢谢,这是唯一对我没有问题的方法!
            • 我同意罗斯的观点,这种方式都是在视觉工作室中完成的,所以它包含得很好。这应该是公认的答案。
            【解决方案12】:

            没有问题的安全方法是制作表单的模板 您可以在同一个项目或任何其他项目中使用它。你可以很容易地添加它,比如添加一个新的表单。这是制作模板

            的方法

            1-从文件菜单点击导出模板

            2- 选择模板类型(选择项目模板)并点击下一步

            3-勾选您要制作模板的表格,然后点击下一步两次

            4-重命名您的模板并(放置描述,选择图标图像,如果需要,可以预览图像)

            5 次点击完成

            现在您可以在任何项目中添加新项目并选择您的模板

            【讨论】:

            • 这是我复制表单的首选方式,因为它消除了重命名引起的任何回归错误。请注意,在 VS2017 中,导出模板命令已移至项目菜单。并且由于一个错误,当您选择自动导入新模板时,您需要关闭并重新打开 VS2017 才能显示模板。
            • 是的,这个问题终于在 vs2015 中用模板 zip 解决了。我喜欢它,因为它可以快速将“新的通用对话框”堆叠在适当的位置,即新项目!
            【解决方案13】:
            1. 右键单击表单 -> 复制类

            1. 右键单击目标文件夹并粘贴类

            1. 重命名新表单并同意重命名对此类的所有引用。

            【讨论】:

            • 我没有看到“复制类”这个选项。我正在使用 VS 2017 社区。该功能是否仅适用于 VS 的付费版本?
            • 我也没有使用付费版本。我不确定此上下文菜单项可用的标准是什么。
            【解决方案14】:

            如果您在 VS 2019 中工作,请花几分钟时间创建一个项目模板——这是一个完美的解决方案。 How to: Create item templates

            不确定它是否适用于早期版本的 VS。

            【讨论】:

              【解决方案15】:
              1. 按“Ctrl”并拖动鼠标复制现有的表单类文件。
              2. 然后从项目中排除现有的表单类文件。
              3. 重命名新的表单类文件。转到后面的代码,重命名类名 及其相关参考资料。
              4. 将项目以前存在的表单类文件包含回来
              5. 完成

              【讨论】:

                【解决方案16】:

                此过程可能需要一两分钟...

                • 创建一个新项目。
                • 将表单文件复制到新项目的文件夹中。
                • 在新项目中包含表单。
                • 重命名表单。
                • 在代码隐藏文件中重命名其类名。
                • 在代码隐藏文件中重命名构造函数名称。
                • 在设计器文件中重命名类名。
                • 将更改后的表单文件带回原始项目的文件夹中并包含它。

                【讨论】:

                  猜你喜欢
                  • 2016-07-15
                  • 1970-01-01
                  • 2018-05-15
                  • 1970-01-01
                  • 2011-03-05
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  • 1970-01-01
                  相关资源
                  最近更新 更多