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

时间:2016-03-01 18:13:17

标签: c# wpf events handlers

在我的代码中,我接下来要做的事情:

        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 个答案:

答案 0 :(得分:3)

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

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

答案 1 :(得分:1)

对于无关紧要感到抱歉,我发现有相同的处理程序,但是应用于XAML中的图像容器,这就是为什么我找不到它们。