繁体   English   中英

事件未触发

[英]event not being fired

我做了一个自定义对话框窗口,它继承了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();

您只是直接从KeyDown事件处理程序中调用OKButton_click 那是一样的提高Click确定按钮本身的事件-它只是一个方法调用。 因此,难怪没有调用OKButton.Click其他事件处理程序。

我不知道自己手动引发Click事件的任何方式。 听起来确实应该有一个同时从Click事件处理程序和KeyDown事件处理程序中调用的通用方法。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM