2010-10-11 68 views
0

我想爲GotFocus和LostFocus上的所有文本框調用通用處理函數。是否可以爲Windows Phone 7創建GetPreviousFocusedElement函數?

有關的GotFocus我可以創建:

private void GotFocus() 
{ 
    TextBox textBox = ((TextBox)FocusManager.GetFocusedElement()); 
    textBox.Text = ""; 
} 

,並調用它像這樣:

private void textBox1_GotFocus(object sender, RoutedEventArgs e) 
{ 
    //Instead of this in every TextBox 
    //TextBox textBox = (TextBox)sender; 
    //textBox.Text = ""; 
    GotFocus(); 

} 

但引發LostFocus我不能做同樣得到一些symetry處理?我是否有義務在私人成員中管理GotFocus中控件的記憶,以便稍後可以在LostFocus中使用它?

難道沒有辦法通過掛鉤.NET系統來創建更多的全局方法嗎?創建這個缺少的GetPreviousFocusedElement函數?

我喜歡Symetry法則,這就是醫生如何發現新的法律,我認爲這個原則也適用於IT。

回答

1

參數object sender包含對控件的引用。

private void textBox1_GotFocus(object sender, RoutedEventArgs e) 
{ 
    (sender as TextBox).Text = ""; 
} 

private void textBox1_LostFocus(object sender, RoutedEventArgs e) 
{ 
    (sender as TextBox).Text = ""; 
} 

或任何你想要的LostFocus方法。

+0

我不想傳遞發件人,這就是要點:) – user310291 2010-10-13 18:20:10

+0

所有事件都有發件人參數 - 因此您可以編寫一個事件處理程序來處理GotFocus和LostFocus事件 - 然後使用sender參數來確定發射事件的對象。如果你不想使用sender參數,那麼你所要求的可能是不可能的。你想要一個解決方案,所以我給你一個。 – samjudson 2010-10-19 13:28:41

+0

好吧問題是在.NET中明確使用發件人作爲參數,而不是能夠獲取它的任何上下文。 – user310291 2010-10-30 14:02:48

相關問題