2012-07-02 29 views
2

我試圖通過代碼來添加RoutedEventHandler所有TextBoxes,使用下面的代碼行:RoutedEventHandler不能正常添加到指定的元件

this.AddHandler(TextBox.GotFocusEvent, new RoutedEventHandler(textBox_GotFocus)); 

上面的代碼結合的處理程序的所有形式的控制在窗口而不是單獨的文本框。請某人

  1. 解釋爲什麼發生這種情況
  2. 怎麼做是正確的。

謝謝。

+2

+1很好的問題1)發生這種情況,因爲GotFocusEvent只自UIElement繼承和傳遞給.AddHandler解析爲UIElement.GetFocusEvent,因此適用於自UIElement繼承所有控件 – cppanda

+0

@cppanda非常感謝你爲解釋。有關如何將處理程序添加到文本框中的任何建議? – Chibuzo

回答

1

可能不完全是你所追求的,因爲它仍然會觸發每個UIElement。但是,您可以執行以下操作來獲得所需的「最終結果」。

public void textBox_GotFocus(object sender, RoutedEventArgs e) 
    { 
     var textBox = e.Source as TextBox; 

     if (textBox == null) 
      return; 

     //what ever you wanted to do 
    } 
+0

謝謝,它的工作! – Chibuzo