[WPF, WF] C#코드를 통한 TextBox의 Focus 해제

■WPF에서

 

private void TextBox_KeyDown(object sender, KeyEventArgs e)
{

    ((TextBox)sender).Text = e.Key.ToString();

 

    //논리적 Focus 해제 - TextBox의 LostFocus 이벤트가 실행

    FocusManager.SetFocusedElement(FocusManager.GetFocusScope((TextBox)sender), null);

 

    //키보드 Focus 해제 - 창에서 커서 깜빡임이 해제
    Keyboard.ClearFocus();
}

 

TextBox에 한글자 입력 후 포커스가 해제되어야 하는 경우에 사용했습니다.

 

Keyboard.ClearFocus(); 만으로 커서깜빡임이 해제되지만

TextBox의 LostFocus 이벤트가 실행될 필요가 있다면 FocusManager를 통해 논리적으로 Focus 해제를 하는 것이 추가로 필요합니다.

 

 

■윈폼에서

this.ActiveControl = null;

이 한줄로 포커스가 해제되고 LostFocus 혹은 Leave 이벤트가 실행됩니다.