2016-03-01 54 views
0

在我的代码,我做的下一件事:无法删除的事件处理程序在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; 
     } 

但似乎处理器仍是了,我不知道如何禁用它们为好。

回答

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

我试着你告诉我,但它不起作用。处理程序仍在运行。 – Unencrypted

+0

发布更多的代码,也许我们可以帮助尝试和解决。 – Taterhead

0

对不起inconviniance,我发现有相同的处理程序,但适用于XAML图像的容器,所以这就是为什么我无法找到他们。