在Visual Studio 2008(C#)中制作表单的副本。

16

我现有一个项目中的表单。

我的当前任务是创建一个现有表单的副本并在新表单上进行一些更改。仅复制表单的cs文件是不行的,因为现有内容本身引用了文件信息。

简单来说,我正在尝试创建一个名为MyNewForm的表单,它将是MyCurrentForm的直接副本,而不会在仅仅复制粘贴代码内容时导致任何可能出现的命名冲突。

我可以通过什么最快的方式实现这个目标?


一个表单实际上与几个文件相关联。编辑这些文件将是一项繁琐且容易出错的任务。 - Shamim Hafiz - MSFT
通常情况下,如果文件是由VS生成的,则在VS中重命名文件还会重命名相关文件(.designer等)。 - Oded
4个回答

30

复制可视化工作室解决方案浏览器中的表单。重命名它。并且在.cs和.Designer.cs文件中手动更改类名。不要使用VS重构功能,因为它会使对原始类的引用失效。


如何在Visual Studio解决方案资源管理器中复制文件?我尝试了复制粘贴,但旧文件名被替换了,并且出现了某种冲突。 - Shamim Hafiz - MSFT
@Gunner:我没有看到任何冲突。我只需右键单击->复制,然后右键单击适当的文件夹->粘贴。如果文件在同一个文件夹中,则会创建“Copy Of Form1”,并将所有相关文件名相应地重命名。 - Kamyar
谢谢。这对我有用。我忽视了新创建的文件。 - Shamim Hafiz - MSFT
1
我建议将.cs和.Designer.cs文件中对原类的所有引用都重命名。我认为手动查找替换比重构更好,因为重构可能会清除对原始类的引用。 - gonzobrains
@gonzobrains 我其实就是那么做的。你必须手动重命名引用。 - Kamyar

12
要在同一项目中复制表单:
  1. 右键单击源表单-->复制
  2. 右键单击目标文件夹/项目-->粘贴
  3. 右键单击新表单-->重命名
  4. 手动更改.cs文件中的类名
  5. 手动更改.cs文件中的构造函数名称
  6. 手动更改.Designer.cs文件中的类名
祝您使用愉快!

1

为什么需要制作表单的副本?尝试找到一些重构可以帮助你,例如创建一些基础表单并提取共同逻辑。
每次制作副本都会导致小猫死亡!


4
对于我们中的一些人来说,失去小猫并不是阻碍,反而是动力。 - JeremyDWill

0

您可以添加一个新的空白表单,然后选择原始表单上的所有项目,并将它们粘贴到新表单上。这样做不会复制背后的代码。但是,这也可以通过复制粘贴来解决。

这不会导致任何重命名冲突。


第二次复制粘贴不会引起冲突吗? - Shamim Hafiz - MSFT

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接