将现有表单添加到项目中但未被识别或可用

时间:2014-11-10 20:43:37

标签: c#

我可以将现有表单添加到项目中,并查看代码和可视化表单本身。但是我添加此表单的C#项目无法识别表单。我试图通过将表单名称放在Program.CS中来运行项目时打开它,但它会出现错误,因为它无法识别表单名称和抱怨询问可能缺少的引用或依赖项。我以前一直在VB中做这个没有任何问题。所以我试图找到我需要添加什么样的引用或依赖项以及放置它等等但我什么也没发现。

这里没有可以复制的代码,因为它非常基础和通用。我创建了一个新项目并删除了项目默认form1。然后我使用add - >从任何其他简单项目中添加了现有表单。现有项目到项目。我还尝试在Visual Studio之外复制.cs,.resx和Designer.cs表单文件,然后添加现有文件。

"使用System.Windows.Forms"和#34;使用System.Drawing"在项目中。显然,我错过了一些东西,而且MS使它变得更加复杂和加密。我假设他们必须处理"外面"形成一些独立的阶级或某事。有人请帮我这个???这不是那么困难。你能不能用另一个项目中的某个表单名称和一些新项目名称来构建一个示例,并显示必须要做的所有事情,就像你可能在这个新项目中创建的任何其他表单一样? ......换句话说,它可以被使用。

谢谢!

VH

感谢您的回复!所以我猜有没有办法让添加的形式取代原始形式????您知道没有显示为类类型(绿色),但好像它是某种模板形式添加并使其成为原始形式。我只是希望能够将现有表单用作可重复使用的表单,因此我不必使用所有按钮等重新制作相同的表单。您知道类似于...的目的....:)

4 个答案:

答案 0 :(得分:2)

我不知道我是否正确理解了您的问题,但由于有关命名空间的答案无法解决您的问题,我最好的猜测是:

当你做添加 - >现有项目...... 并选择了表单文件,Visual Studio添加了这3个文件( Form1.cs Form1.Designer.cs Form1。 resx )作为单独的项目,而不是 Form1.cs ,其中相关的设计器和资源文件嵌套在一起。当您在设计器模式下打开 Form1.cs 时,您只能看到空表单(没有任何控件)。这就是我理解你的界限:

  

但我添加此表单的C#项目无法识别表单。

如果是这种情况,可以通过编辑项目文件* .csproj 来解决此类问题。如果将原始项目和新项目的文件与添加的现有表单项文件进行比较,您会注意到原始项目具有以下行:

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

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

<EmbeddedResource Include="Form1.resx">
  <DependentUpon>Form1.cs</DependentUpon>
</EmbeddedResource>

虽然新项目文件将包含以下行:

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

<Compile Include="Form1.Designer.cs" />

<EmbeddedResource Include="Form1.resx">
  <SubType>Designer</SubType>
</EmbeddedResource>

因此您需要使用编辑器打开* .csproj 并将 Form1.Designer.cs Form1.resx 文件标记为“DependentUpon” Form1.cs 文件。

这不是一个很好的解决方案(您需要编辑项目XML文件,而不是在Visual Studio IDE中进行一些不错的点击)... 所以为了避免这种情况,我建议:当将现有表单项添加到项目时不要选择所有3个文件,而只选择主表单文件(在本例中为“Form1.cs”),其余为Visual Studio自我添加。

答案 1 :(得分:0)

问题的最可能原因是现有表单的命名空间,几乎肯定会与您尝试打开表单的代码的命名空间不同。

为表单提供完整的命名空间,如MyProject1.Namespace.Form1,可以解决问题。

VB项目的实现可能略有不同:在项目设置中指定了默认命名空间,因此许多开发人员不会使用额外的命名空间限定VB项目中的所有类(包括表单)。

答案 2 :(得分:0)

我通过创建2个新项目进行了测试。一个名为&#34; TestHasFormToAdd&#34;和另一个&#34; TestAddingForm&#34;。我仔细地在每个项目中命名了原始表格&#34; FormToAdd&#34;和&#34; OrigForm&#34;分别。我添加了现有的表单,&#34; FormToAdd&#34;来自&#34; TestHasFormToAdd&#34;通过添加FormToAdd.CS文件。然后我打开Program.cs文件并添加以下内容:using TestHasFormToAdd;这是添加的表单代码下的命名空间。然后我能够改变打开表格的行:

Application.Run(new OrigForm());到

Application.Run(new FormToAdd());

它只是以绿色显示。然后我删除了这一行:使用TestHasFormToAdd;并将Application.Run行更改为:

Application.Run(new TestHasFormToAdd.FormToAdd());

当我运行程序时,两个都工作,我添加的表单出现并运行。

答案 3 :(得分:0)

正如Ewalldinho所建议的,仅使用项目&gt;添加 Form1.cs 添加现有项菜单效果最佳。您可能必须刷新Solution Explorer才能导入所有相关文件。

另外,不要忘记在 Form1.cs Form1.Designer.cs

中进行任何必需的命名空间更改