2

私が作成するほとんどすべてのプロジェクトには ListView が含まれているため、ListView を変更するためのすべての重要な機能を含むクラスを作成するというアイデアを得ました。次のようになります。

メインフォーム:

ListViewFunctions LVF = new ListViewFunctions();
ListView newLV = new ListView();
newLV = LVF.AddItem(newLV, new List<string> { "item", "subitem1", "subitem2" });

クラス:

Public class ListViewFunctions
{
   public ListView AddItem(ListView LV, List<string> InputStrings)
   {
       if (InputStrings.Count > 0)
       {
           for (int i = 0; i < InputStrings.Count; i++)
           {
               if (i == 0)
                   LV.Items.Add(InputStrings[0]);
               else
                   LV.Items[LV.Items.Count - 1].SubItems.Add(InputStrings[i]);
           }
       }
       return LV;
    }
}

ただし、上記のようなクラスにコントロールを渡すことが危険と見なされるかどうか、またパフォーマンスにどのように影響するかはわかりません。だから、誰かが安全かどうか答えてくれることを願っています。

前もって感謝します!

4

3 に答える 3

4

他のタイプでクラスを利用できるように、ジェネリックにすることを計画している場合は、おそらくヘルパー クラスのみを使用します。

拡張によるカスタム コントロールの作成はListView、追加のメソッドを実装するための好ましいListView方法です。

public class MyCustomListView : ListView
{

//...

} 
于 2013-07-19T11:31:19.770 に答える
1

あなたが懸念している限り、同時に異なるスレッドによって操作されていない場合、スクランブルまたは不安定なオブジェクト状態にもつながる同期の問題につながる可能性がある場合
、ソフトウェアエンジニアリングの観点からクラス参照を他のクラスに渡すことは完全に有効です、保守性とバグ追跡に影響します。提案されているように、次のように ListView クラスを拡張してみてください。

public static HelperClass
{
  public static void AddItems(this ListView, params string[] itemsToAdd)
  {
     // to-do
  }
} 
于 2013-07-19T11:21:33.250 に答える