C# 在不同窗口中单击按钮时调用函数(WPF应用程序)
我从wpf应用程序的一个页面启动了一个窗口,我想在按下子窗口中的按钮时调用一个函数 这是调用窗口的页面:C# 在不同窗口中单击按钮时调用函数(WPF应用程序),c#,wpf,C#,Wpf,我从wpf应用程序的一个页面启动了一个窗口,我想在按下子窗口中的按钮时调用一个函数 这是调用窗口的页面: namespace AppWpf10 { public partial class Prepare : System.Windows.Controls.Page { private void button_Click(object sender, RoutedEventArgs e) { Choice win2 = ne
namespace AppWpf10
{
public partial class Prepare : System.Windows.Controls.Page
{
private void button_Click(object sender, RoutedEventArgs e)
{
Choice win2 = new Choice();
win2.Show();
}
public void DoStuff()
{
//CODE THAT DOES STUFF
}
}
}
namespace appWpf10
{
public partial class Choice : Window
{
private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
窗口已启动:
namespace AppWpf10
{
public partial class Prepare : System.Windows.Controls.Page
{
private void button_Click(object sender, RoutedEventArgs e)
{
Choice win2 = new Choice();
win2.Show();
}
public void DoStuff()
{
//CODE THAT DOES STUFF
}
}
}
namespace appWpf10
{
public partial class Choice : Window
{
private void button1_Click(object sender, RoutedEventArgs e)
{
this.Close();
}
}
}
因此,我希望在另一个窗口中按下DoStuff()
按钮1。我该怎么做?通过在按钮1中调用DoStuff()
,从子窗口单击?或者通过添加事件“在另一个窗口中按下按钮1”
不管怎样,有人知道怎么写吗?提前谢谢 一种解决方案是在构造函数中提供父到子窗口,然后它可以调用其父方法:
private void button_Click(object sender, RoutedEventArgs e)
{
Choice win2 = new Choice(this);
win2.Show();
}
public partial class Choice : Window
{
Prepare parent;
public Choice(Prepare parent)
{
this.parent = parent;
}
private void button1_Click(object sender, RoutedEventArgs e)
{
parent.DoStuff();
this.Close();
}
}
嗯,有很多种方法,从表面上看,你没有走MVVM路线,这很好。因此,在您的特定情况下,一种简单的方法是在实际创建子项时订阅子项的按钮单击事件,因为您将该按钮命名为:
namespace AppWpf10
{
public partial class Prepare : System.Windows.Controls.Page
{
private void button_Click(object sender, RoutedEventArgs e)
{
Choice win2 = new Choice();
win2.Show();
win2.button1.Click += clickEventHandler;
}
private void clickEventHandler(object sender, RoutedEventArgs e)
{
DoStuff();
}
public void DoStuff()
{
//
}
}
}
关于parent.DoStuff(),我得到了这个错误代码>行“'System.NullReferenceException'异常:对象未定义为对象的一个实例”(翻译不好)我使用B.K.的答案使其正常工作,但仍然非常感谢您。我不知道为什么会发生此错误。向我们展示更多代码-如何创建新窗口等。