Невозможно удалить обработчик событий в wpf
В своем коде я делаю следующее:
mouse_down = new MouseButtonEventHandler(Ship_Mouse_Down);
mouse_move = new MouseEventHandler(Ship_Mouse_Move);
mouse_up = new MouseButtonEventHandler(Ship_Mouse_Up);
foreach (Image i in PlayerField.Children)
{
i.MouseUp += mouse_up;
i.MouseDown += mouse_down;
i.MouseMove += mouse_move;
i.Source = (ImageSource)Resources["sea"];
}
Это добавляет обработчики к соответствующим изображениям. Затем, когда игрок нажимает кнопку, я делаю это:
foreach (Image i in PlayerField.Children)
{
i.MouseDown -= mouse_down;
i.MouseUp -= mouse_up;
i.MouseMove -= mouse_move;
}
Но кажется, что обработчики все еще работают, и я не знаю, как отключить их навсегда.
2 ответа
Всегда сначала удаляйте обработчики событий, а затем добавляйте, возможно, вы добавляете их несколько раз.
foreach (Image i in PlayerField.Children)
{
i.MouseUp -= mouse_up;
i.MouseDown -= mouse_down;
i.MouseMove -= mouse_move;
i.MouseUp += mouse_up;
i.MouseDown += mouse_down;
i.MouseMove += mouse_move;
i.Source = (ImageSource)Resources["sea"];
}
Извините за неудобства, я обнаружил, что есть те же обработчики, но применяются к контейнерам изображений в XAML, поэтому я не смог их найти.