导入Windows Forms (C#),Visual Studio 2012

16
尝试将现有的Windows表单添加到VS2012 WinForm项目中,我选择“添加/现有项...”,然后导入:MyForm.cs、MyForm.designer.cs和MyForm.resx。
在早期版本的VS中,这种方法是可行的。(我可能需要调整名称空间。)
在VS2012中,为了设计师的目的,MyForm.designer.cs和MyForm.resx现在与该表单不再关联;即它们显示为解决方案资源管理器中的单独文件条目,而不是嵌套在MyForm下。双击MyForm会显示一个空表单(没有控件),没有错误消息。项目可以编译和运行。
但是,当我将相同的文件拖放到项目中(调整/重命名名称空间)时,表单文件会正确地关联在一起,设计器也可以正常打开表单。
虽然我现在有了一个解决方案,但有人能否说明这些方法之间的区别,添加/现有项选项的意义是什么,如果它不起作用,实际上正在发生什么?哪个文件(.csproj可能?)负责连接表单文件?因为在早期版本的VS中两种方法都有效,所以我可以认为这是一个错误吗?
谢谢。
3个回答

27

尝试重现您的问题 - 但没有成功。

假设您想要导入一个名为YourFormName的表单。那么,您只需要将YourFormName.cs添加到项目中 - 其余部分(YourFormName.designer.csYourFormName.resx)将自动添加。

我的步骤:

  1. 在VS2012(11.0.05727.1)中创建WinForms项目(.Net Framework为4)
  2. 右键单击项目 -> 添加 -> 现有项...
  3. 搜索任何带有控件的WinForm(我添加了两个在VS2010中创建的.NET Framework 4和3.5的表单)
  4. 大约30-40秒后,对于这两种情况,“设计器”按预期工作,并加载所有现有的控件/代码。

嗯,请澄清“您只应添加Form1.cs...”的意思?当创建新的Windows窗体应用程序时,Form1会自动生成。我不会对它进行更改...当您添加现有表单时,您搜索和选择哪些_文件_?所有3个(即.cs、.designer.cs和.resx?)无论如何,这就是我所做的。我等了又等,无论是0.4秒还是40秒都没有关系,最终我在解决方案资源管理器中看到3个文件条目,并且设计器无法工作。 - Matthias
Form1.cs只是一个通用的窗体名称,强调您应该仅添加.cs文件-而不是.resx.designer.cs。我会编辑我的答案以使其更清晰。 - Nogard
好的,我明白了。如果我只选择.cs文件,那么它会按照你说的方式工作。这绝对是与旧版本不同的行为。也许在以前的版本中,只需导入cs就可以了,但如果选择其他文件,它也会“原谅”你。有趣的是,它“需要” .designer.cs文件,因为这里面包含了所有重要的控件内容。此外,在查找要导入的文件时,它还包括.resx文件在文件掩码中(但如果实际执行操作,则会出现问题)。我认为这个问题已经解决了。谢谢Nogard。 - Matthias
虽然这个代码完美地运行了 - 我已经点赞了它,或者说做了什么动词 - 但我不明白为什么!CS文件中没有包含任何将控件添加到表单的代码。可能需要在同一文件夹中放置设计师文件?奇怪。 - Andy Brown
6
注意:此方法仅适用于一个表单。如果选择多个表单的 .cs 文件,则会忽略 designer.cs 和 .resx 文件。 - Gerhard Powell

4

只需包含cs文件,等待约一分钟即可。不需要添加其他文件。这将起作用。

进入项目 > 添加现有项目,选择表单myform.cs文件,然后点击添加按钮。这将导入文件到您的项目中。


0

只需将Form.cs添加到项目中即可导入表单,不要添加Form.designer.cs和Form.resx,因为它们是自动生成的,会导致表单无法工作。

在“解决方案资源管理器”中右键单击项目,然后单击“添加”,再单击“现有项”。找到要添加的Form.cs表单,每次只添加一个Form.cs。

表单加载时可能会有一些延迟,并更改命名空间。


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