Chciałbym wykonać pewne przetwarzanie przed dodaniem elementu do listy BindingList. Widzę, że istnieje zdarzenie ListChanged, ale jest ono uruchamiane po dodaniu elementu. Zdarzenie AddingNew jest uruchamiane tylko wtedy, gdy wywoływana jest metoda AddNew (nie jest to metoda Add). Czy ktoś wcześniej robił coś takiego?Jak mogę uruchomić zdarzenie przed dodaniem elementu do kolekcji w języku C#?
UPDATE:
Stworzyłem następujących klas i gdy metoda dodawania nazywa na IList, moja nowa metoda dodawania zostaje wyzwolony. Czy mam problem z castingiem, który czytałem w innych miejscach? Jeśli usunięto interfejs ISpecialCollection z kolekcji, moja metoda Add nie zostanie wywołana. Czy ktoś może wyjaśnić, dlaczego działa inaczej? Czy mam problem z przesyłaniem, jeśli korzystam z interfejsu ISpecialCollection <?
public interface ISpecialCollection<T> : IList<T>
{
}
public class SpecialCollection<T> : BindingList<T>, ISpecialCollection<T>
{
public new void Add (T item)
{
base.Add(item);
}
}
class Program
{
static void Main(string[] args)
{
IList<ItemType> list = new SpecialCollection<ItemType>();
list.Add(new ItemType());
}
}
Jeff A.mówi gdzieś, że wartość jest mocno buforowana i że aktualizacja może potrwać kilka godzin. –