2016-03-06 41 views
-1

XAML文件WPF keydown無法捕捉逃生?

PreviewKeyDown="Window_KeyDown" 

.cs文件

private void Window_KeyDown(object sender, KeyEventArgs e) 
{ 
    System.Windows.Forms.MessageBox.Show(e.Key.ToString()); 
    if (e.Key == Key.Escape) 
    { 
     this.Close(); 
    } 
} 

的KeyPreview設置爲true,雖然消息框不會出現ESC鍵。 (消息框顯示爲其他「常規」鍵,如0-9和a-z)。我如何解決這個問題或找到一種方法來觸發ESC上的某些東西?


EDIT


Win.xaml

<Window x:Class="WindowsFormsApplication5.Win" 
     xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation" 
     xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml" 
     WindowStyle="None" 
     PreviewKeyDown="Window_KeyDown"> 
</Window> 

Win.xaml.cs

public partial class Win : Window 
{ 
    public Win() 
    { 
     InitializeComponent(); 
    } 

    private void Window_KeyDown(object sender, KeyEventArgs e) 
    { 
     System.Windows.MessageBox.Show(e.Key.ToString()); 
     if (e.Key == Key.Escape) 
     { 
      this.Close(); 
     } 
    } 
} 

Form1.cs的

public partial class Form1 : Form 
{ 
    public Form1() 
    { 
     InitializeComponent(); 
    } 

    private void button1_Click(object sender, EventArgs e) 
    { 
     Win scrn = new Win(); 
     scrn.Show(); 
    } 
} 

希望這應該清除任何問題,對此不清楚抱歉。

+1

你爲什麼用WPF的Windows Forms'MessageBox'? – poke

+0

重複的問題,已經在回答:http://stackoverflow.com/questions/7691713/how-to-close-a-window-in-wpf-on-a-escape-key –

+0

我不知道,最簡單的方法我知道顯示一個彈出消息,這真的很重要嗎? – user1768788

回答

0

也許WPF的MessageBox相關

你有另一個控制是可能處理事件這只是正常的我

<Window PreviewKeyDown="wPreviewKeyDown" 

private void wPreviewKeyDown(object sender, KeyEventArgs e) 
{ 
    MessageBox.Show(e.Key.ToString()); 
    if (e.Key == Key.Escape) 
     this.Close(); 
} 

+0

請參閱編輯,謝謝你 – user1768788