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