1

get set メソッドを別のクラスに移動することは可能ですか?

基本的にすべての変更をメインフォームに直接反映するオプションフォームを使用しています(ほとんどの場合、コントロールの色、フォントなどを変更するためです。

この問題は、メイン クラスが get set メソッドで満たされているため、かなり多くのコントロールを変更し始めるときに始まります。そのため、コードをリファクタリングして、クラスの読みやすさを少し向上させることができるかどうか疑問に思っていました。メソッドを別のクラスに移動するには(部分クラス?)

2 つのコントロールだけの小さな例を次に示します。

public Font TreeFont
{
    get { return customTreeView1.Font; }
    set { customTreeView1.Font = value; }
}

public Font TextBoxFont
{
    get { return customTextBox1.Font; }
    set { customTextBox1.Font = value; }
}

public Font MenusFont
{
    get { return menuStrip1.Font; }
    set
    {
        menuStrip1.Font = value;
        statusStrip1.Font = value;
        contextMenuStripForSnippetContent.Font = value;
        contextMenuStripTreeViewMenu.Font = value;
    }
}

public Color TreeFontForeColor
{
    get { return customTreeView1.ForeColor; }
    set { customTreeView1.ForeColor = value; }
}

public Color TextBoxFontForeColor
{
    get { return customTextBox1.ForeColor; }
    set { customTextBox1.ForeColor = value; }
}

public Color TreeFontBackgroundColor
{
    get { return customTreeView1.BackColor; }
    set { customTreeView1.BackColor = value; }
}

public Color TextBoxFontBackgroundColor
{
    get { return customTextBox1.BackColor; }
    set { customTextBox1.BackColor = value; }
}

ご想像のとおり、変更する必要があるものは非常に多いため、行が積み重なっていきます。

さらに、コントロールを返すだけで、代わりに他のフォームで作業する方が良い方法ですか、それとも get/set メソッドをより良い方法と見なしますか?

前もって感謝します。

4

3 に答える 3

1

C#リージョンを使用して大きなコードファイルを管理しやすくするか、部分クラスを使用して大きなコードファイルを複数の管理しやすいファイルに分割することができます。

于 2012-07-31T05:50:55.233 に答える
1

私があなたを正しく理解していれば、問題は「クラス」ではなく「ファイル」です。そのため、 Partial ClassesInitializeComponentを使用して、(Visual Studio がメソッドで行うのと同じように) クラスを 2 つのファイルに単純に分割できます。

名前空間が同じであることを確認してください (サブフォルダーにファイルを作成すると、ネストされた名前空間が得られます。変更するだけです。) また、クラスがpublic partial class 両方のファイルで始まることを確認してください。また、両方のクラスで同じプロパティを宣言しないでください。

ステップ バイ ステップの説明: [ソリューション エクスプローラー] でプロジェクトを 右クリックします。「追加」をクリックします。「新しいアイテム」をクリックします。「クラス」をクリック。に変更class Class1public partial class Form1 : Formます。using System.Windows.Forms;ファイルの先頭に追加します。プロパティを追加します。

于 2012-07-31T11:39:20.867 に答える
0

Page.FindControl( "controlNameHere")を可能にする別の種類の関数を使用して、適切な光に当てることができます。これは、WindowsフォームではなくASP.NETページ用ですが、ここで同じ解像度を見つけることができます。Windowsフォームコントロールから名前でコントロールを検索します。このようにして、何も返さなくても、コントロール名を取得して操作できます。

于 2012-07-31T05:50:57.253 に答える