[英]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.