2013-02-19 15 views
14

私はWindow Form Appプロジェクトを持っています。現時点では私のコードはすべてデフォルトのファイルであるForm1.csファイルにあります。今私はこの1つのファイルに約1300行のコードを持っています。この1つのファイルコードをいくつかのファイルに分解したいと思っています。私は "部分的"なキーワードを使いたいです(私は劇的な何もしたくありません)。だから私は追加する必要がありますどのようにファイル既存のフォームファイルに部分ファイルを追加する

右クリックプロジェクト名 - >アドオン>新しい項目 - >クラス

class1.csclass2.csなどへの結果でも、このファイルは、コンパイル後のフォームのフォームファイルに変換します。新しいファイルが既存のプロジェクトForm1.csForm1.cs[Design]と統合されるように、追加する正しい方法は何ですか?

+4

'partial'は、その用途がありますが、私はお勧めしたいの適しているのは、コードを論理ユニットに分割し、別々のクラスを作成して使用することです。多くのファイルにまたがってフォームを張るのではなく、フォーム内に配置します。 –

+0

ファイル名は任意で、名前空間とクラス名が同じで、両方が 'partial'とマークされていることを確認してください。 –

+0

"フォーム"ファイルまたは "C#クラス"を追加していますか? – Default

答えて

5

名前空間とクラス名を保持し、partialとマークする必要があります。ファイル名は実際には重要ではありませんが、開発者がファイルの内容をすばやく確認できるようにするのが良い方法です。

のForm1.cs

namespace TheSameNamespace 
{ 
    public partial class Form1 : Form 
    { 
     public Form1() 
     { 
      InitializeComponent(); 
     } 
    } 

    // other definitions 
} 

Form1.Designer.cs

namespace TheSameNamespace 
{ 
    partial class Form1 
    { 
     /// <summary> 
     /// Required designer variable. 
     /// </summary> 
     private System.ComponentModel.IContainer components = null; 

     // the rest of the designer class 
    } 
} 

Form1.Calculations.cs

namespace TheSameNamespace 
{ 
    partial class Form1 
    { 
     // calculation methods definitions 
    } 
} 

Form1.EventHandlers.cs

namespace TheSameNamespace 
{ 
    partial class Form1 
    { 
     // event handlers definitions 
    } 
} 

のように...

+1

...しかし、その内容に応じて、ファイルに(Form1.Calculations.csやForm1.EventHandlers.csなどの)有用な名前を付けるのは良い考えです。 – Nuffin

+0

私は、そのおかげで答えを更新します。 –

+1

...しかし、これはほとんどの場合常に不要で避けられます。パーシャルタリティは、生成されたコードをユーザーコードから分離するのに優れていますが、ロジックをコンパートメント化するために悪用することは再考する必要があります。地獄、私はこれ以上のリージョンコードを好むだろう。 –

0

partialキーワードはprimarly独自のコードによって拡張することができ、生成されたファイルのためにされた - 単一の分割には使用することはありませんあなたが本当にそれをしたい場合は、あなたは次のようにしなければなりません:

  1. 新しいクラスを作成します。
  2. クラスの名前を自分のクラス(Form1.xxx.cs)に変更します。
  3. 部分的なキーワードを使用して、名前と名前空間を調整します。

clearifyするには:

のForm1.cs

public partial class Form1 { /* ... */ } 

Form1.somepart.cs

public partial class Form1 { /* ... */ } 
関連する問題