2012-07-17 143 views
0

我已經當我按在tetxbox事件OKButton_Click被炒魷魚(因爲出現消息框)輸入繼承ChildWindow事件不被解僱

public partial class InputWindow : ChildWindow 
{ 
    public InputWindow() 
    { 
     InitializeComponent(); 
    } 

    private void OKButton_Click(object sender, RoutedEventArgs e) 
    { 
     MessageBox.Show("clicked"); 
    } 

    private void CancelButton_Click(object sender, RoutedEventArgs e) 
    { 
     this.DialogResult = false; 
    } 

    private void inputTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.Key == Key.Enter) 
      this.OKButton_Click(this, new RoutedEventArgs()); 
    } 
} 

一個自定義對話框窗口。但是,下面的事件處理程序中的代碼(添加文件夾)存在於另一個類中不會被觸發!即使消息框出現!這是爲什麼?以及我如何解決它?

InputWindow win = new InputWindow(); 
win.Title = "Enter New Folder Name"; 
win.OKButton.Click += (s, e) => 
{ 
    if (!string.IsNullOrWhiteSpace(win.inputTextBox.Text)) 
    { 
     AddNewFolder(win.inputTextBox.Text); 
     win.DialogResult = true; 
    } 
}; 
win.Show(); 
+0

你的xaml如何,因爲你沒有附加keydown事件。 – Silvermind 2012-07-17 06:33:26

+0

' – SupaOden 2012-07-17 06:34:41

+0

見@喬恩飛碟雙向的答案+你需要調用單擊事件: http://stackoverflow.com/questions/4734482/button1-performclick-in-wpf – 0x49D1 2012-07-17 08:03:54

回答

3

你只是從你的KeyDown事件處理程序調用OKButton_click直接。這是而不是與在OK按鈕本身上提升Click事件相同 - 這只是一個方法調用。所以難怪其他事件處理程序OKButton.Click未被調用。

我不知道有什麼辦法自己手動提高Click事件。聽起來好像你應該有一個從Click事件處理程序和KeyDown事件處理程序中調用的常用方法。