事件没有被解雇

时间:2012-07-17 06:29:32

标签: c# silverlight events

我创建了一个继承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());
    }
}

当我在tetxbox中按Enter键时,事件OKButton_Click被触发(因为出现了消息框)。但是,下面的事件处理程序中存在于另一个类中的代码(添加文件夹)不会被触发!即使出现消息框!为什么会这样?我该如何解决?

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();

1 个答案:

答案 0 :(得分:3)

您只是直接从OKButton_click事件处理程序调用{​​{1}}。那个与在OK按钮本身上引发KeyDown事件相同 - 它只是一个方法调用。所以毫无疑问,Click的其他事件处理程序没有被调用。

我不知道自己手动提升OKButton.Click事件的方法。听起来你应该有一个从Click事件处理程序和Click事件处理程序调用的常用方法。