8

フォームを作成するときに[ VisualStudio]タブが気に入らなかったので、[Design]常にプログラムでフォームを最初から作成し.cs、などの1つのファイルのみを使用しますForm1.cs。ちょうど今日、タブを使用して新しいフォームを作成すると、デザイン関連のすべてのものを処理する、[Design]というファイルも作成されることに気付きました。*.Designer.cs

フォームを手動で実行しているので、*.Designer.csファイルを使用する必要がありますか?もしそうなら、いつ、どのように、そしてなぜそれを使うべきですか?この*.Designer.csファイルの目的は、VS自動生成コードをユーザーコードから分離することだけですか、それともより深い意味がありますか?


フォームの作成方法の例を次に示します。

class MyForm : Form
{
    TextBox file;
    Button open, close;

    MyForm()
    {
        InitControls();
    }

    void InitControls()
    {
        file = new TextBox();
        file.Location = Point(...);
        open = new TextBox();
        open.Text = "Open File";
        ...
    }
}

InitControlsメソッド宣言と変数宣言を.Designer.csファイルに分ける必要がありますか?

4

3 に答える 3

6

正確な日付を思い出せませんが、ある時点までVisual Studioは個別の.designerクラスを使用せず、リージョン内に含まれる同じクラスのすべてのデザイナーとロジックを含んでいたことを知っています。それがもはや当てはまらないという事実は、それがコードファイルを分離することより劣っていると広く考えられていたことをあなたに告げるべきです。

それ以来、Visual Studioデザイナーは、partial修飾子を使用してUIロジックとUIデザインを分離しています。電話をかけるInitializeComponentと、基本的に、デザイナーがUIを作成するために生成したすべてのコードを呼び出します。

手動で修正するべきではないので、開発者から生成されたコードを抽象化するために、設計者は2つの別々のファイルを作成すると確信しています。デザイナーを使用しないので、これはあなたにとってほとんど利点がありません。これは考慮すべきことです。

.NETをRAD環境にするのに役立つ素晴らしいデザイナーツールを使用しないことを選択することは非論理的であり、他の多くのコーダーとうまく連携しないと思います。単一のクラスの領域でデザイナーコードを囲むことが、別のデザイナーファイルを使用するよりもクリーンで読みやすい場合は、そうしてください。

于 2013-02-16T15:43:59.023 に答える
3

これ.Desinger.csは、Windowsフォームデザイナーが生成するコードをプログラマーが作成するコードから分離するために、Visual Studio 2005(C#2)で導入されました。このファイルの唯一の用途はInitializeComponent、デザイナーが生成するメソッドを保持することです。ただし、そのファイルに独自のUIコードを配置することはお勧めしません。これは、WinFormsデザイナーがファイルの内容(実際にはInitializeComponentメソッドのみ)を解析して、デザイナーでフォームを作成するためです。.Designer.cs独自のコードをファイルに入れる意味はありません。

ちなみに、WinFormsテクノロジは、デザイナーを使用する必要があるか、多くの苦痛を被るような方法で設計されています。

于 2013-02-16T15:39:29.883 に答える
2

*.Designer.cs&を2つの別々のファイルに保持するだけCode Fileの力を利用することに他なりません。partial classApplication CodeUI Design

手動でデザインを行っているのでForm、デザイナーファイルは必要ありません。

*.Designer.csコントロールを初期化するすべてのControlsおよびメソッドの宣言が含まれています!private void InitializeComponent()

于 2013-02-16T15:36:48.023 に答える