2010-09-27 24 views
9

Mam zdarzenie siatki danych Ładowanie rzędzieSprawdź, czy zdarzenie już istnieje

_gridObj.LoadingRow += new EventHandler<DataGridRowEventArgs>(_gridObj_LoadingRow); 

aw obsługi tworzę kolejne zdarzenie. W poniższym kodzie skąd mogę wiedzieć, czy zdarzenie MouseLeftBtn już istnieje dla tego wiersza?

void _gridObj_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
} 

Dzięki

Voodoo

+0

Czy chcesz przetestować, czy dołączono obsługę zdarzeń, aby nie dołączać więcej niż jednego zdarzenia? Czy zdarzenie LoadingRow może zostać wywołane więcej niż raz w wierszu? – aqwert

+0

Tak, w '_gridObj_LoadingRow' zdarzenie' MouseLeftButtonUp' jest dołączone wiele razy. Chcę sprawdzić, czy zdarzenie "MouseLeftButtonUp" jest już dołączone, więc nie rejestruję innego zdarzenia dla niego. W moim przypadku uruchamia '' MouseLeftButtonUp' wiele razy. – VoodooChild

+0

Dobrze, dodałem odpowiedź, która powinna spełnić twoje wymagania. – aqwert

Odpowiedz

13

Oparte na Twój komentarz, że nie chcesz, aby dołączyć muliple teleskopowe w tym przypadku mogę wypisać następnie ponownie zarejestrować. Nie powoduje błędu anulowania subskrypcji, jeśli żadna nie istnieje i zapewnia tylko jeden program obsługi.

void _gridObj_LoadingRow(object sender, DataGridRowEventArgs e) 
{ 
    e.Row.MouseLeftButtonUp -= new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
    e.Row.MouseLeftButtonUp += new MouseButtonEventHandler(Row_MouseLeftButtonUp); 
} 
+0

+1, dziękuję, że wydawało się, że zadziałało. – VoodooChild