2012-07-17 106 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事件处理程序中调用的常用方法。