

お世話になります。

Win10にて、VScommunityでC#のコードを記述中に、他のプロジェクトからフォームのコードを  
コピーしてくると、何故か通常のコードとDesignerのコードがツリー上で別々に  
表示されてしまいます。その状態でコピーしてきたフォームをデザインで開いても、  
何もない初期のフォームしか表示されず、後から編集するといったことができません。

この現象は今回初めてではなく、過去にも何度かあったのですが、その時は  
resxを消してVSを再起動する、フォルダ内の『obj』フォルダを丸ごと消して  
VSを再起動する…などといったことで解決できていた気がしたのですが、今回はその方法でも  
元に戻りませんでした。

そもそも、この現象自体も毎回起きるわけではなく、何事もなくうまくいくこともあったりと、  
原因も対策法もわかりません。

解決策をお教えいただけますでしょうか。

よろしくお願いいたします。

[![画像の説明をここに入力](https://i.stack.imgur.com/ZdQJr.jpg)](https://i.stack.imgur.com/ZdQJr.jpg)


CC BY-SA 4.0
2019-02-14T04:53:37.103
52764
2019-03-26T16:23:42.963
9374
question
c# visual-studio
VisualStudio2017 C#で通常のコードとDesignerが分離してしまう


おそらく、以下の記事の情報が当てはまると思われます。  
関連しそうなものを抜粋して引用しましたが、同記事内の他の回答にも目を通してみてください。

ただし質問時のVisualStudioが古いため、拡張子は変わっていますし、XMLの項目名も変わっている可能性がありますので注意してください。

あと基本的に、namespace、class名・属性定義、コピーしたコードで使用しているコントロールがきちんと変数宣言されているか、`{`と`}`・`(`と`)`のバランスなどが合っているかにも注意してください。

[Form and designer files not linking in Solution
Explorer](https://stackoverflow.com/q/22599843/9014308)  
この記事で解決マークの付いた回答はこれてすが、

> 私はVisual Studio 2008でも同じ問題を見ました。通常、ソリューションをコンパイルするか閉じて再度開くと、問題は解決します。Visual
> Studio 2012では、[追加]>
> [既存のアイテム]の順に選択して3つのファイルをすべて選択すると問題が発生することがわかります。通常は最上位のform.csを追加するだけで、VSは自動的に.designer.csファイルと.resxファイルをインクルードします。

こちらの回答の方が有用でしょうか。(下記の$$$$Check thisは引用者が強調しました)

> プロジェクト（.csproj）を確認してください
[code]

    <EmbeddedResource Include="Properties\Resources.resx">
      <Generator>ResXFileCodeGenerator</Generator> $$$$Check this
      <SubType>Designer</SubType>
      <LastGenOutput>Resources.Designer.cs</LastGenOutput>
    </EmbeddedResource>
    
    <Compile Include="Properties\Resources.Designer.cs">
      <AutoGen>True</AutoGen> $$$$Check this
      <DesignTime>True</DesignTime>
      <DependentUpon>Resources.resx</DependentUpon>
    </Compile>
    
[/code]

[Unable to get the designer view window back using windows forms with Visual
Studio 2010](https://stackoverflow.com/q/10941692/9014308)

> デザイナーの`partial class`の前にクラスが宣言されていないことを確認してください。
> .csファイルは、ファイルの最初のクラスとして`partial designer class`を持つ必要があります。
[code]

    public partial class frmWidget : Form
    {
    }
    
    public class SomeClass
    {
    }
    
[/code]

> SomeClassを部分的なfrmWidgetクラスの上に置くことはできません。
> 再配置すると、デザイナーの問題は自動的に修正されるため、VSを再起動したりフォームを再作成したりする必要はありません。
> これが役に立つことを願っています。

[Visual studio solution explorer not showing form cs
file](https://stackoverflow.com/q/32916624/9014308)

> 私も同じ問題が発生して、フォームが表示されなかった。  
>  あなたがすべきことは、
>
>   * プロジェクトファイル `/project_directory/project_name.csproj`
> を編集して、`your_form_name.cs` が以下のようになっていることを確認します。  
>  注意：最初にプロジェクトファイルから既存のyour_form_name.csを持つすべてのレコードを削除してから、以下を追加してください。
>

[code]

    <Compile Include="your_form_name.cs">
       <SubType>Form</SubType>
    </Compile>
    <Compile Include="your_form_name.Designer.cs">
       <DependentUpon>your_form_name.cs</DependentUpon>
    </Compile>
       <EmbeddedResource Include="your_form_name.resx">
       <DependentUpon>your_form_name.cs</DependentUpon>
    </EmbeddedResource>
    
[/code]

> ソリューションをもう一度開くと、Formがプロジェクトにもう一度表示されます。

* * *

上記最後の部分は、おそらく下記のGroup Filesに相当するのでしょう。  
MicrosoftのDocsサイト等で調べてみてください。

[拡張機能を利用してVisual Studioをより便利にしよう](https://codezine.jp/article/detail/8318?p=5)

> Solution Explorer拡張  
>  ソリューションエクスプローラー上で実行できる、以下のようなコマンドを追加します。  
>  Group Files  
>  複数のファイルをグループ化および解除できます。Visual Studioの基本機能では、例えば、Windows
> フォームアプリケーションでフォームのデザイナーが生成する「Form1.designer.csファイル」と分離コードの「Form1.csファイル」をグループ化するために使われている機能を簡単に使えるようにするための機能です。この機能を使うと、部分クラスなどを用いて複数のファイルに分けた同一クラスのファイルをまとめて管理することができます。


CC BY-SA 4.0
2019-02-14T06:47:34.003
52771
2019-02-14T07:57:36.803
2019-02-14T07:57:36.803
26370
26370
52764
answer