Dlaczego mój program obsługi zdarzeń strzela dwa razy?
hej, mam trudny czas, próbując rozwiązać ten problem. Byłem przez 3 godziny i wciąż nie mogłem dowiedzieć się, dlaczego to robi ... oto kod
private void Catagory_SelectionChanged(object sender, SelectionChangedEventArgs e)
{
int selectedCategoryId = categoryIdList[categoryListBox.SelectedIndex];
client.GetItemsAsync(selectedCategoryId);
client.GetItemsCompleted +=
new EventHandler<GetItemsCompletedEventArgs>(client_GetItemsCompleted);
}
void client_GetItemsCompleted(object sender, GetItemsCompletedEventArgs e)
{
itemIdList.Clear();
itemNameList.Clear();
itemNumberList.Clear();
itemDisplayList.Clear(); //Clears the Display List Items
if (e.Error == null)
{
itemIdList = e.ItemIDList;
itemNumberList = e.itemNumber;
itemNameList = e.Result;
for (int i = 0; i < itemIdList.Count; i++)
{
itemDisplayList.Add(new ItemDisplay { itemNumber = itemNumberList[i], itemName = itemNameList[i] });
}
//Populating the listbox controll with the itemDisplaylist...
Items.ItemsSource = itemDisplayList;
}
else
{
MessageBox.Show("Problem in getting the items list.");
}
}
Kiedy zmieniam kategorię po raz pierwszy, działa idealnie ... mam na myśli, że wywołuje funkcjęGetItemsAsync(selectedCategoryId)
i pobiera wyniki i dzwoni do obsługi zdarzeńclient_GetItemsCompleted()
a wewnętrzna praca modułu obsługi zdarzeń działa tak, jak powinna, ustawia listy z odpowiednimi danymi i wyświetla itemNumber oraz itemName w polu listy ... ALE kiedy zmienię kategorię ponownie, aby uzyskać różne elementy, nie robi działa poprawnie, co powoduje, że czyści listy i wypełnia listy tak, jak powinno, uruchamia pętlę for i wypełnia listę listBox o nazwieItems
ale z jakiegoś powodu ponownie trafia na szczyt funkcji i opróżnia wszystkie listy: / ... proszę powiedz, dlaczego ponownie uruchamia tę funkcję .. i kiedy wybiorę inną kategorię ponownie, wykonuje program obsługi zdarzeń 3 razy, a następnie 4 razy i tak dalej ... każdy wie, dlaczego to robi? muszę to naprawić dla mojego projektu :(