无法删除 wpf 中的事件处理程序

本文关键字:事件处理 程序 wpf 删除 | 更新日期: 2023-09-27 18:36:52

在我的代码中,我做了下一件事:

        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;
        }

但似乎处理程序仍在运行,我不知道如何永久禁用它们。

无法删除 wpf 中的事件处理程序

始终先删除事件处理程序,然后再添加,可能是您多次添加它们。

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 中的图像容器,所以这就是我找不到它们的原因。