2010-10-11 72 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

相关问题