簡體   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