在Visual Studio中的项目之间复制winforms

时间:2009-05-14 14:16:28

标签: c# visual-studio winforms

在Visual Studio的解决方案中,将表单从一个项目复制或剪切/过去到另一个项目的最佳方法是什么?

每当我尝试使用解决方案资源管理器(拖放或右键单击剪切和粘贴)时,它只复制底层的C#代码而不是必要的“零碎”,以帮助您通过表单设计器可视化表单

21 个答案:

答案 0 :(得分:43)

  1. 将三个文件.cs.designerresx复制到目标解决方案文件夹。
  2. 在目标项目中,选择Add existing item并首先添加设计器文件。
  3. 修改Namespace属性。 .cs文件也应该出现。
  4. 修改.cs文件中的命名空间。
  5. 使用resx添加Add existing item文件。

答案 1 :(得分:17)

要将表单从一个VS2013项目复制到另一个项目,最简单的(鼠标点击次数最少)是:

  1. 在目标项目中,右键单击父文件夹(可能是您的项目),然后在菜单中选择“添加;现有项目”。

  2. 然后在源项目中选择表单的cs文件。例如,选择Form.cs(不是Form.Designer.cs或Form.resx)。

  3. 在目标项目中打开Form.cs并更改命名空间(所有实例)。

  4. 关闭并重新打开Form.cs,您将看到所有控件等。

答案 2 :(得分:9)

想出来 - 知道这将是愚蠢的事情。

显然目标项目应该有参考:

  • System.Windows.Forms的
  • System.Drawing中
在您进行任何复制或粘贴之前,

首先包含在项目中,否则您将遇到我所描述的问题。

感谢所有试图帮助BTW的人。

答案 3 :(得分:7)

现在在2012年更容易了。只需转到文件>添加>现有项目>将表单拖放到要将其添加到的项目中。

答案 4 :(得分:5)

我在Visual Studio 2012中尝试了以下过程,但它确实有效。

  1. 右键单击解决方案>将要从中导入表单的项目添加到解决方案中。添加>现有项目菜单。选择项目,然后单击“确定”。
  2. 现在右键单击要复制的表单,选择复制。
  3. 右键单击要复制的项目,然后选择粘贴。
  4. 表单将被复制到您的项目中,现在重命名命名空间。
  5. 从解决方案中删除您在步骤1中添加的项目。

答案 5 :(得分:4)

使用ReSharper(获取演示),右键单击代码视图中的类,重构 - >移动,然后将其移动到另一个项目。

额外的好处是,如果通过在项目之间移动命名空间来更改命名空间,它将自动更新所有引用。

答案 6 :(得分:3)

确保不仅复制Form.cs,还复制Form.designer.cs和Form.resx文件。

但我需要问一下为什么你想要在同一个解决方案中的多个项目中维护同一个表单的副本。听起来好像你可能想要概括它中的代码,把它放在一个类库中并在它适用的地方重用它。

答案 7 :(得分:2)

如果要在同一台计算机上进行表单制作,则只需执行此操作即可。

在解决方案资源管理器项目中-> 添加-> 添加现有项

从源目录中仅选择.cs <script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> <div id="studentToggle"> </div>文件,然后刷新将起作用的当前解决方案资源管理器。

答案 8 :(得分:1)

对于Visual Studio V.12,这是唯一适用于我的方法(它是以上条目的混合):

  • 通过文件资源管理器复制构成表单的三个文件。
  • 在Visual Studio中解决方案资源管理器的顶部栏中,启用“显示所有文件”。
  • file.cs文件显示为灰色。单击右键并选择:“包含在项目中”。解决方案资源管理器自动链接三个文件(.designer和.resx在.cs文件下)。 file.cs将图标从c ++更改为form form。

答案 9 :(得分:1)

我终于想出了以下几点:

1)复制所需格式的3个文件,其文件扩展名为.cs.resx.Designer.cs
2)添加现有并选择formName.cs
3)检查添加表单的名称空间和Name属性值。
4)在Program.cs文件中,使用using NameSpace;并在new NameSpace.formName()行中替换Application.Run()

答案 10 :(得分:0)

您是在选择文件,还是使用设计器“复制”所有控件?在解决方案资源管理器中选择YourForm.cs文件并通过复制粘贴或拖放到其他项目进行复制应该可以满足您的需求。

答案 11 :(得分:0)

我使用的是Visual Studio 2010,下面是我执行的步骤:

  1. 将所有3个文件(.cs,.resx,.Designer.cs)复制到目标项目文件夹中。
  2. 在Visual Studio中,右键单击项目 - &gt; 添加 - &gt; 现有项目......
  3. 选择所有3个文件(.cs,.resx,.Designer.cs),然后点击添加
  4. 如果目标项目中的命名空间不同,则更改2个文件(.cs,.Designer.cs)上的命名空间。
  5. 运行项目。
  6. 完成!

答案 12 :(得分:0)

我尝试了以下步骤,并且效果很好。

  1. 将所有3个文件和图标文件(如果有)复制到目标项目。
  2. 现在转到您的项目解决方案资源管理器,然后单击sol.explorer顶部的显示所有文件图标
  3. 现在您可以在项目中看到新添加的文件。

答案 13 :(得分:0)

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

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

(第二)这可以通过两种方式实现:

(2a-1)在文件浏览器中,将3个文件粘贴到包含其他表单的项目文件夹中

(2a-2)在VS解决方案资源管理器中,转动显示所有文件&#39;在,右键单击粘贴的表格&amp; &#39;包括在项目&#39;。它应该没有其他变化。

或者,我认为更好:

(2b-1)在VS中,单击解决方案资源管理器并粘贴w / Control-C。 (由于某种原因,解决方案资源管理器中的右键单击上下文菜单可能不会显示粘贴选项,但它可以通过键盘进行操作。)此方法可以直接将表单添加到项目中,而无需“包括在项目中”#39;如上。使用此方法,您可以在一个步骤中一次添加任意数量的表单(每个表单的所有3个文件)。

答案 14 :(得分:0)

如果您使用的是VS 2015,则只想添加“ .vb”文件并使用新项目名称更改名称空间。

Ex:如果要将使用VS2008创建的“ Form1”添加到使用VS2015创建的新项目中。

  1. 将所有“ .vb”文件,“。resx”文件,“。disigner.vb”文件复制到新项目文件夹中。
  2. 然后使用新的项目名称更改“ .disigner.vb”文件的名称空间。

这两个步骤对我有用。

答案 15 :(得分:0)

在Visual Studio 2015中,单击解决方案资源管理器,然后右键单击鼠标 添加->现有项,然后从另一个项目中选择要添加的表单,例如Form.cs,并自动添加Form.designer.cs,将添加Form.resx

答案 16 :(得分:0)

如果需要在不同项目中使用相同的表单,则解决方案是: 创建一个“类库项目”,为此项目添加您需要共享的表单,然后将对dll的引用添加到您的主项目中,就可以轻松地引用表单。它对我来说很完美

答案 17 :(得分:0)

**这个对我有用:

1)将源文件(.cs或vb,.designer,.resx)复制到目标文件夹

2)在目标解决方案中显示隐藏文件

3)选择这些文件并将它们包含在项目中。

这将干净地添加winform或任何其他部分分割的文件。

答案 18 :(得分:0)

我发现的“最简单”的方法是:

  1. 在新项目中创建一个同名表单
  2. 向新表单添加按钮或其他控件(这将创建 .resx 文件)
  3. 保存并关闭您的新项目
  4. 复制旧项目中的 MyForm.cs、MyForm.designer.cs、MyForm.resx 文件以覆盖新项目
  5. 在 VS 中打开新项目之前,使用文本编辑器编辑 MyForm.cs 和 MyForm.designer.cs 中的命名空间以匹配您的新项目命名空间
  6. 此时,您可以在 VS 中打开新项目,一切都应该正常了

我从来没有尝试复制文件和“添加现有项目”,因为层次结构似乎没有重建。也许像另一个用户建议的那样首先添加 .designer.cs ?无论如何,如果您以这种方式尝试,您可以手动编辑新项目 .csproj 文件以包含原始项目中的层次结构条目,如下所示:

<Compile Include="MyForm.Designer.cs">
  <DependentUpon>MyForm.cs</DependentUpon>
</Compile>

值得注意的是,在两个不同项目的表单之间复制控件真的很容易。只需在源项目中选择并Ctrl+C,然后在新项目中选择表单并Ctrl+V。

答案 19 :(得分:0)

这些“自动”选项在 VS2019 中都不适合我。表单设计器始终为空白,粘贴的文件在解决方案资源管理器中未正确组合。我在 VS2019 中的做法是以下 3 个步骤:

  1. 使用 Windows 资源管理器将表单文件复制到新的项目目录。例如,这 3 个文件:
  • StartForm.cs
  • StartForm.Designer.cs
  • StartForm.resx
  1. 如果您的命名空间不同,请在记事本中打开两个 .cs 文件并将命名空间更改为新的命名空间。 (使用 ctrl+F 确保您不会遗漏任何引用)我不必这样做,因为我的命名空间在我的新项目中是相同的。

  2. 在记事本中编辑两个 csproj 文件,并将这些文件的引用从一个 csproj 文件复制到新的 csproj 文件。例如,这是我必须复制的内容:

<ItemGroup>
...
<Compile Include="StartForm.cs">
  <SubType>Form</SubType>
</Compile>
<Compile Include="StartForm.Designer.cs">
  <DependentUpon>StartForm.cs</DependentUpon>
</Compile>
<EmbeddedResource Include="StartForm.resx">
  <DependentUpon>StartForm.cs</DependentUpon>
</EmbeddedResource>
...
</ItemGroup>

此后,如果您在 VS 中打开新项目,它会识别更改并询问您是否要重新加载。

答案 20 :(得分:0)

  1. 转到visual studio并设置您的新项目。将在所选目的地创建一个新文件。

  2. 现在转到要导出到刚刚创建的项目的数据的源文件。复制源文件中的所有文件。

  3. 转到新项目文件夹并将所有文件粘贴到那里。

  4. 现在由于这些文件已经存在,将显示替换新项目文件的选项。只需点击替换现有文件。

  5. 现在,检查您刚刚创建的项目。所有的变化都会出现在那里。