私はカートと呼ばれるクラスの静的配列リストを持っていますが、他のクラスで使用するイベントリスナーを実装する方法はありますか? 私はC#を初めて使ってPropertyChangedEventHandlerを理解しようとしましたが、成功しませんでした。 のArrayListとプロパティは以下のように初期化されていますC#静的Arraylist数が変更されたときにイベントをトリガする方法は?
private static ArrayList cartList = new ArrayList();
public static ArrayList CartList
{
get { return cartList; }
set
{
cartList = value;
}
}
編集:基本メソッドを非表示にすることで、リストで動作するように
変化した@KMCコード:
public class ListOfProducts : List<Product>
{
public void Add(Product obj)
{
base.Add(obj);
this.OnChange();
}
public void UpdateLast(Product obj)
{
base[base.Count - 1] = obj;
this.OnChange();
}
public void Remove(Product obj)
{
base.Remove(obj);
this.OnChange();
}
public void Clear()
{
base.Clear();
this.OnChange();
}
public event EventHandler Change;
protected void OnChange()
{
if (this.Change != null)
{
this.Change(this, new EventArgs() { });
}
}
}
INotifyPropertyを実装して変更できます。 http://stackoverflow.com/questions/1315621/implementing-inotifypropertychanged-does-a-better-way-exist –
詳細を教えてください。 ArrayList自体またはそのリストに含まれる各項目に関連するイベントを受け取ってもよろしいですか? –
補足として:ArrayListの使用を控えてください。代わりにリストを使用してください。どうして? ArrayListはリストの古い非総称的な方法であり、すべての項目を 'オブジェクト'として保存するためです。リストは、キャストする必要がないように、すべてのアイテムをCartオブジェクトとして保存します。より便利でより良いパフォーマンス。 –
Measuring