2012-08-13 3 views
0

부모 창이 keyup 이벤트가 연결되도록 설계되었습니다. MainWindow를 같은 간다 :부모 창이 WPF의 자식 창에서 Keyup 이벤트를 처리합니다.

public partial class MainWindow : Window 
{ 

    public MainWindow() 
    { 
     InitializeComponent(); 
    } 

    private void Window_KeyUp(object sender, KeyEventArgs e) 
    { 
     if (e != null && e.Key == Key.Return) 
     { 
      MessageWindow msgWindow = new MessageWindow("KEY UP"); 
      msgWindow.Show(); 
     } 
    } 
} 

윈도우를 닫 OK 버튼을 갖는 MessageWindow 같은 간다 :

public partial class MessageWindow : Window 
{ 

    public MessageWindow() 
    { 
     InitializeComponent(); 
    } 

    public MessageWindow(string message) : this() 
    { 
     txtMess.Text = message; 
    } 

    private void btnOk_Click(object sender, RoutedEventArgs e) 
    { 
     this.Close(); 
    } 
} 

을 [복귀] 부모에 새로운 자식 창으로 입력 키를 수신 초기화되고 표시됩니다. Tab 키를 눌러 확인 단추에 초점을두고 Enter 키를 누릅니다. 하위 MessageWindow가 다시 팝업됩니다.

이유 : 부모 창은 자식 창에서 RETURN 키를 눌러 닫을 때 KeyUp 이벤트를받습니다.

FLAG를 사용하는 대신 KeyUp 이벤트 처리를 상위 처리로 중단하는 방법을 제공해주십시오.

답변

0

KeyUp 대신 PreviewKeyDown 이벤트를 사용하십시오

+0

대단히 감사합니다! – Nishant

+1

이 답변은 정확 합니다만, PreviewX 이벤트가 루트 요소에서 가장 중첩 된 요소로 터널링되는 반면 일반 X 이벤트는 가장 중첩 된 요소에서 루트 요소로 바뀌기 때문에이 답변이 추가되었습니다. 이것은 루트 요소가 터널링 된 이벤트를 처리 할 수있는 첫 번째 기회와 버블 링 된 이벤트를 처리 할 수있는 마지막 기회를 얻음을 의미합니다. – Fenton

관련 문제