none
ソリューションエクスプローラーについて RRS feed

  • 質問

  • ソリューションエクスプローラーでForm1.csの配下に、インデントされてdesigner.csとresxが表示されますが、
    自前のファイルをここに追加することはできますか?

    やりたいことはForm内のコードが長くなったので
    自前のpartialクラスを追加したのですが、ファイルをここに置ければ見栄えがいいかなということです。


    よろしくお願いします。
    • 編集済み princeman 2012年4月21日 7:18
    2012年4月21日 7:18

回答

  • VisualStudioでは直接設定できないですが、プロジェクトファイルを書き換えることで設定可能です。

    1)例として、コードファイルForm1.part2.csをプロジェクトに追加します。
    2)プロジェクトを保存して終了します。
    3)プロジェクトファイル(拡張子.csproj)をメモ帳などで開きます。
    4)Form1.part2.csの書かれている場所を探します。

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

      多分こんな感じで見つかるはず なので、

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

    に書き換えて保存する。
    6)プロジェクトを改めて開く。

    DependentUponで親になるファイル名を設定すると、親子関係のように表示することが出来ます。
    ここら辺はForm1.csとForm1.designer.csがcsprojファイル内でどのように記述されているか眺めると、なんとなく分かってくると思います。

    詳しくはMSBuild プロジェクトの共通項目がを参考にしてください。

    #<DependentUpon>Form1.Designer.cs</DependentUpon>なんてこともできたり


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 山本春海 2012年5月1日 8:05
    2012年4月21日 10:41

すべての返信

  • VisualStudioでは直接設定できないですが、プロジェクトファイルを書き換えることで設定可能です。

    1)例として、コードファイルForm1.part2.csをプロジェクトに追加します。
    2)プロジェクトを保存して終了します。
    3)プロジェクトファイル(拡張子.csproj)をメモ帳などで開きます。
    4)Form1.part2.csの書かれている場所を探します。

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

      多分こんな感じで見つかるはず なので、

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

    に書き換えて保存する。
    6)プロジェクトを改めて開く。

    DependentUponで親になるファイル名を設定すると、親子関係のように表示することが出来ます。
    ここら辺はForm1.csとForm1.designer.csがcsprojファイル内でどのように記述されているか眺めると、なんとなく分かってくると思います。

    詳しくはMSBuild プロジェクトの共通項目がを参考にしてください。

    #<DependentUpon>Form1.Designer.cs</DependentUpon>なんてこともできたり


    個別に明示されていない限りgekkaがフォーラムに投稿したコードにはフォーラム使用条件に基づき「MICROSOFT LIMITED PUBLIC LICENSE」が適用されます。(かなり自由に使ってOK!)

    • 回答としてマーク 山本春海 2012年5月1日 8:05
    2012年4月21日 10:41
  • クラスが大きくなった、コードが長くなったから partial クラスにするというのは、逃げに過ぎません。
    本来的にはクラス分割を考えるべきです。

    partial クラスは何も考えずにファイルを分割できます。しかしながら、どのファイルにどのメソッド・プロパティ・フィールドを置くべきか悩みますし、探すのも大変になります。
    また、大きなクラスは影響範囲も広く、容易に触れなくなりますし、partial で隠れていたコードを見落として手戻りが起きたり、不具合を発生させたりするかもしれません。

    個人の開発では個人の自由ですが、もしチームで開発されているのであれば安易に partial に逃げないようにしてください。


    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年4月21日 13:03
    モデレータ
  • gekkaさん

    ありがとうございます。やはり何かやり方があるものなのですね。
    試してみてxxxx.csのファイルがForm以下に入ったことを確認しました。
    ただ、なぜかFormとして認識されてしまうのかダブルクリックすると
    空のフォームが表示されました。試しにSubTypeの項目をFormから
    Componentにしても同じでした。

    Azuleanさん

    ありがとうございます。今回は個人的開発ですが、フォーム上のコントロールが多く
    またそれらのハンドラが多いのでコントロールごとに分けられればいいかなという考えです。

    2012年4月23日 22:07
  • 可能であれば、ユーザーコントロールを作って、部品に分けることも検討してみてください。
    もちろん、無理にやる必要はありませんが…。

    質問スレッドで解決した場合は、解決の参考になった投稿に対して「回答としてマーク」のボタンを押すことで、同じ問題に遭遇した別のユーザが役立つ投稿を見つけやすくなります。

    2012年4月23日 22:24
    モデレータ
  • Azuleanさん

    ユーザーコントロールを検討してみたいと思います。
    ありがとうございました。

    2012年4月26日 2:37
  • 念のため、

    ハンドラが多いとのことですが、それぞれのハンドラは異なる動作をするのでしょうか? コードの書き方によっては、共通のハンドラを適用できることもあります。

    Azuleanさんと同じく逃げのpartialはあまりお勧めできません。

    2012年4月26日 3:43