P.B*_*key 40 c# visual-studio-2010 winforms
我从未能够成功地将Form现有文件添加到新项目中.
我在博客上看到你只添加*.cs文件并且依赖项进来.好吧,我试过这个并且文件做了dragin并关联*.designer和*.resx文件. 但是,窗体图标不会显示.相反,该文件看起来像普通的*.cs文件图像.而且,当我双击该文件时,我得到了代码而不是表单对象.
是否可以添加现有表单并正确识别它们?
P.B*_*key 31
经过一些研究后,我发现了问题的根源.所有人必须导入的是*.cs文件是正确的.需要注意的是项目类型.如果在类库项目中工作,则必须执行另一个步骤.
System.Windows.Forms.dll和的引用System.Drawing.*.cs文件笔记:
答:只有在执行这些步骤后才能正确识别文件,然后尝试打开文件.突然VS"醒来"并修复了文件.
B. 步骤顺序无关紧要.如果您已导入*.cs文件,只需修复引用即可.
C.如果缺少其他引用,例如DevExpress或其他第三方控件导入),*.cs文件将无法正确显示,直到解决此问题.
bre*_*nth 22
这是一种不涉及关闭项目并重新打开它的方法:
Mat*_*ord 21
对不起P.Brian.Mackey,你的解决方案对我不起作用.它确实通过让VS认识到它是一个表单而不是一个代码文件来改进它,即给它是Icon(想象它添加了Form)
但只有我设法完全解决问题的方法是在文本编辑器中手动编辑csproj文件.我并不是真的相信这是一个很好的解决方案并且可能非常危险,特别是考虑到我犯了两个输入错误并完全破坏了项目但是一旦我做对了它就确实有效.如果没有正确关闭标签或忘记文件扩展,也很难找到错误.
因此,在通过"添加 - >现有项目"添加文件后,项目开始使用这些条目:(Ps我确定您不必先将文件复制到项目文件夹中,只需导航到存储它们的位置在项目外部,VS会将它们复制到您右键单击的文件夹中.提前复制当然也可以.)
<Compile Include="Reports\GBudget1Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget1Report.Designer.cs" />
<Compile Include="Reports\GBudget2Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget2Report.Designer.cs" />
<Compile Include="Reports\LASHForm.cs">
<SubType>Form</SubType>
</Compile>
Run Code Online (Sandbox Code Playgroud)
并进一步在文件中:
<EmbeddedResource Include="Reports\GBudget1Report.resx" />
<EmbeddedResource Include="Reports\GBudget2Report.resx" />
Run Code Online (Sandbox Code Playgroud)
将这些与正确工作的项目中的现有表单进行比较(其他选项是如果你没有一个,就是在Visual Studio中创建一个新表单,它会给你正确的标记复制)我发现DependentUpon标记未将子文件与主表单代码文件相关联.
所以我手工编辑它以匹配:
<Compile Include="Reports\GBudget1Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget1Report.Designer.cs">
<DependentUpon>GBudget1Report.cs</DependentUpon>
</Compile>
<Compile Include="Reports\GBudget2Report.cs">
<SubType>Form</SubType>
</Compile>
<Compile Include="Reports\GBudget2Report.Designer.cs">
<DependentUpon>GBudget2Report.cs</DependentUpon>
</Compile>
Run Code Online (Sandbox Code Playgroud)
再往下文件:
<EmbeddedResource Include="Reports\GBudget1Report.resx">
<DependentUpon>GBudget1Report.cs</DependentUpon>
</EmbeddedResource>
<EmbeddedResource Include="Reports\GBudget2Report.resx">
<DependentUpon>GBudget2Report.cs</DependentUpon>
</EmbeddedResource>
Run Code Online (Sandbox Code Playgroud)
这不是我喜欢的解决方案,但它确实有效.如果有人有更好的解决方案,我很高兴听.
您可以将现有表单导入项目.需要导入的文件取决于用于创建表单的Visual Studio的版本.
我将假设你有两个独立的项目,Foo和Bar,在不同的解决方案中:
C:\
Projects\
Foo\
Foo.sln
Foo.vcproj
Program.cs
Foo.cs
Foo.Designer.cs
Foo.Designer.resx
Run Code Online (Sandbox Code Playgroud)
和
C:\
Projects\
Bar\
Bar.sln
Bar.vcproj
Program.cs
Bar.cs
Bar.Designer.cs
Bar.Designer.resx
Run Code Online (Sandbox Code Playgroud)
现在,假设您需要将表格Foo导入项目栏.首先,您需要将Foo附带的所有文件复制到Bar项目文件夹中:
C:\
Projects\
Bar\
Bar.sln
Bar.vcproj
Program.cs
Bar.cs
Bar.Designer.cs
Bar.Designer.resx
Foo.cs
Foo.Designer.cs
Foo.Designer.resx
Run Code Online (Sandbox Code Playgroud)
然后,在Visual Studio中打开Bar.sln,右键单击解决方案资源管理器中的Bar项目.选择[添加现有项目],然后在打开的对话框中选择为Foo表单复制的所有文件.确认后,您应该在解决方案资源管理器中正确地看到新导入的表单.
| 归档时间: |
|
| 查看次数: |
72015 次 |
| 最近记录: |