2

メインフォーム/クラスを小さな部分に分割する際に問題が発生しました。

主な理由は、制御イベントのためです。クラスは(少なくとも)20のコントロールで構成されており、各コントロールに少なくとも3つのイベントがあるため、クラスをどのように小さくできるかわかりません。

私が実際に別のクラスに移動することができたいくつかのメソッドでさえ、そもそも意図したとおりに機能できるようにするために、メソッド引数としてコントロールを送信する必要があります。

小さな例は

public static bool GroupContainsSnippet(TreeView tree, string group, string snippetName)
{
    bool result = false;

    if (tree.Nodes[group] != null)
    {
        result = tree.Nodes[group].Nodes.ContainsKey(snippetName);
    }

    return result;
}

どういうわけか、そのようなことをするためにコントロールを送信しなければならないのは奇妙に感じるので、もっと明確な方法があることを望んでいます。

前もって感謝します。

4

2 に答える 2

2

あなたの例を使用して、MyTreeViewなどの独自のTreeView派生クラスを作成し、そこに必要なだけTreeViewコードを配置します。例えば、

public class MyTreeView : TreeView
{
    public bool GroupContainsSnippet(string group, string snippetName)
    {
        return Nodes[group] != null && Nodes[group].Nodes.ContainsKey(snippetName);
    }    
}

これは、特定のTreeViewの動作を独自のクラスにカプセル化するため、よりオブジェクト指向のアプローチです。

于 2012-07-27T15:55:40.540 に答える
1

クラスが大きすぎると思われる場合は、部分的なクラスを調べましたか?クラスのサイズは変更されませんが、一度に処理する必要のある1つのクラスファイル内のコードの量は変更されます。

MSDNリンク

于 2012-07-27T15:34:18.477 に答える