2014-10-21 1 views
0

Итак, у меня есть два текстовых поля: LoginEmail и LoginPassword. Я пытаюсь установить анимацию для них:Выясните, что одно текстовое поле теряет фокус, а другой элемент управления будет сфокусирован

  • Пользователь введите LoginEmail # 1 анимационный # 1 начинается, пользователь бросить LoginEmail # 1 анимация # 2 начинается
  • Пользователь введите LoginEmail # 1 анимация # 1 начинается, пользователь бросить LoginEmail # 1 и перейти LoginPassword # 2 там нет анимации

Код

private void LoginEmail_GotFocus(object sender, RoutedEventArgs e) 
{ 
    FocusAnimation.Begin(); 
} 

private void LoginEmail_LostFocus(object sender, RoutedEventArgs e) 
{ 
    UnfocusAnimation.Begin(); 
} 

private void LoginPassword_GotFocus(object sender, RoutedEventArgs e) 
{ 
    FocusAnimation.Begin(); 
} 

private void LoginPassword_LostFocus(object sender, RoutedEventArgs e) 
{ 
    UnfocusAnimation.Begin(); 
} 

это теперь не работает, потому что, когда пользователь вводит LoginEmail # 1, а затем перейти к LoginPassword # 2 Есть события:

  • LoginEmail_GotFocus (=> FocusAnimation.Begin();)
  • LoginEmail_LostFocus (=> UnfocusAnimation.Begin();)
  • LoginPassword_GotFocus (=> FocusAnimation.Begin();)

Таким образом, необходимо выяснить, что пользователь перешел из LoginEmail в LoginPassword и не отображает UnfocusAnimation & 2nd FocusAnimation. К сожалению, я не знаю, как это сделать.

+0

Вопрос не ясен. Идентификаторы кода не соответствуют идентификаторам в тексте вопроса (текстовое поле №1, LoginPassword, ...). Вы также должны предоставить достаточно кода для воспроизведения вашей проблемы. – madd0

+0

Хорошо. Извините, я только что обновил свой вопрос. – boski

+0

вы все еще не предоставляете достаточно кода для воспроизведения проблемы ... – madd0

ответ

1

Вы должны проверить, кто получает фокус после текстового поля LoginEmail. Нечто должно работать:

private void LoginEmail_LostFocus(object sender, RoutedEventArgs e) 
{ 
     var focusedControl = FocusManager.GetFocusedElement(this); 
     if (focusedControl.GetType() != typeof(TextBox) || ((TextBox)focusedControl).Name != "LoginPassword") 
     { 
      UnfocusAnimation.Begin();    
     } 
} 
0

Вы могли бы просто получить фокус для вашего Textbox 1 всякий раз, когда любая клавиша нажата в keyboard как:

yourtextbox.Focus(); 

, а затем для проигранного focus вы можете использовать что-то вроде этого:

this.Focus(); 

Посмотрите на них для:

https://stackoverflow.com/questions/

How to remove the focus from a TextBox in WinForms?

+0

Нет, это не вопрос. Я обновил вопрос, потому что это было неясно. – boski