2016-06-20 10 views
1

現在、メインのForm.csファイルが大きくなり、いくつかの部分ファイルに分割したいという問題に直面しています。これらは、Visual Studioソリューションエクスプローラーのメインフォーム(MainForm.cs)ノードの下に貼り付ける必要があります。部分フォームクラスをウィンドウの下に追加ノードノード

私は新しいクラスファイルの作成を試み、それを私のMainFormクラスの部分ソースファイルと宣言しました。しかし、新しく作成された部分クラスファイルは、フォームのように見えるアイコンを変更します。代わりに以下MainFormソリューションエクスプローラーのノードに貼り付ける必要があります。

問題視覚化するために、次のように

Wrongly ordered partial class file

MainForm.ContextActions.csファイルの内容は次のとおりです。

namespace Interface_Group_Editor 
{ 
    public partial class MainForm 
    { 
     [...] 
    } 
} 

コンテンツがMainForm.Designer.csファイルに似ています。しかし.Designer.csファイルはMainForm.csノードの下に張り付いていますが、.ContextActions.csではありません。

私は絶対に必要なフォームイベントをMainForm.csファイルで処理し、フォームからアクセスする外部クラスにビジネスロジックを持たせます。しかし、フォームを維持および編集するためのTreeViewコードだけでは、約500行のコードが必要となり、新しい部分ソースファイルに再配置することができます。これは、プロジェクト構造全体の可視性を高めるのに役立ちます!

この現象は、ソリューションエクスプローラに強制する方法はありますか。

+1

[ファイルネスト拡張](https://visualstudiogallery.msdn.microsoft.com/3ebde8fb-26d-4-4374-a0eb-1e4e2665070c)をご覧ください。私はWPF view + viewmodels(フォームグループの中にいくつかの 'cs 'をどのように入れたいかに似ています)を(手動でネストして)組み合わせるために使用しています。グループのネスティング*のアイデアがうまくいくかどうかは分かりません。別のオプションは、大きなグループ(アイテムや他のグループを含む)ごとにプロジェクト内にフォルダを作成することです。ただし、名前空間にフォルダ名を追加するなど、いくつかの愚かな名前空間の問題を追加します(おそらく修正することも可能です)。 – Sinatr

+1

下記のHans Passantと実際に同じ回答を提供する関連記事はhttps://stackoverflow.com/questions/1478610/naming-conventions-for-partial-class-filesです –

答えて

6

IDEではこれができません。テキストエディタで.csprojファイルを編集する必要があります。メモ帳が行います。見つけます

<Compile Include="MainForm.ContextActions.cs" /> 

し、[編集]へ:

<Compile Include="MainForm.ContextActions.cs"> 
    <DependentUpon>MainForm.cs</DepedentUpon> 
</Compile> 

MainForm.Designer.csのエントリは、同様にこのようになりますどのように注意してください。この機能は非常に頻繁にテストされるわけではないので、いくつかの欠点に遭遇する可能性があることに注意してください。あなたがそれらを移動すると、イベントハンドラを戻すことはできません。イベントハンドラを削除するのは難しいシナリオですが、変更されていないのにMainForm.csファイルが変更済みとしてマークされています。通常のように空のイベントハンドラは削除されません。 YMMV。

継承はWinformsの究極のパワーツールです。たとえば、TreeViewから独自のクラスを簡単に派生させ、すべてのカスタムコードをそのクラスに移動することができます。 には、複数回使用するがありません。しかし、おそらくいつか:

+1

私はあなたの正解を複製したくありませんが、過去に私はサブフォルダがこれに対抗する直感的な方法で処理されていると感じました。おそらく、あなたは私がhttps://stackoverflow.com/questions/1478610/naming-conventions-for-partial-class-filesで言ったことに似て、これに発言を加えたいと思っています –

+0

恐ろしい!これはトリックでした – Vinzenz

関連する問題