2016-03-01 56 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圖像的容器,所以這就是爲什麼我無法找到他們。