事件不被解雇
问题描述:
我已经当我按在tetxbox事件OKButton_Click
被炒鱿鱼(因为出现消息框)输入继承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());
}
}
一个自定义对话框窗口。但是,下面的事件处理程序中的代码(添加文件夹)存在于另一个类中不会被触发!即使消息框出现!这是为什么?以及我如何解决它?
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
直接。这是而不是与在OK按钮本身上提升Click
事件相同 - 这只是一个方法调用。所以难怪其他事件处理程序OKButton.Click
未被调用。
我不知道有什么办法自己手动提高Click
事件。听起来好像你应该有一个从Click
事件处理程序和KeyDown
事件处理程序中调用的常用方法。
你的xaml如何,因为你没有附加keydown事件。 – Silvermind 2012-07-17 06:33:26
见@乔恩飞碟双向的答案+你需要调用单击事件: http://*.com/questions/4734482/button1-performclick-in-wpf – 0x49D1 2012-07-17 08:03:54