0

我有一个带有主窗口的 WPF 应用程序。

在 App.xaml.cs 中,在 OnExit 事件中,我想使用后面的 MainWindow 代码中的方法...

public partial class App
{
    private MainWindow _mainWindow;

    protected override void OnStartup(StartupEventArgs e)
    {
         _mainWindow = new MainWindow();
        _mainWindow.Show();


    }

    protected override void OnExit(ExitEventArgs e)
    {
        _mainWindow.DoSomething();
    }

}

方法 :

public void DoSomething()
{
    myController.Function(
       (sender, e) =>
       {

        },

       (sender, e) =>
        {

        }
        );
 }

但我在“_mainWindow.DoSomething();”上放了一个断点 当我按 f11 时,它不会进入函数并且函数什么也不做......我错过了什么吗?

我是初学者,可以做我需要的吗?

编辑:帖子编辑

4

3 回答 3

1

您将 _mainWindow 声明为 Window 类。Window 类没有 DoSomething 函数。将 _mainWindow 的类更改为 MainWindow,它应该可以工作。

 public partial class App
{
    private MainWindow _mainWindow;

    ...
}
于 2014-05-28T10:21:18.160 回答
0

你的 app.cs 应该看起来像

 public partial class App : Application
{
    private MainWindow _mainwindow;

    public MainWindow mainwindow
    {
        get { return _mainwindow??(_mainwindow=new MainWindow()); }
        set { _mainwindow = value; }
    }
    protected override void OnStartup(StartupEventArgs e)
    {
        _mainwindow.Show();
    }
    protected override void OnExit(ExitEventArgs e)
    {
        _mainwindow.DoSomething();
    }
}
于 2014-05-28T10:23:19.980 回答
0

Window 类没有成员 DoSomething,而 MainWindow 类有(从 Window 派生)。

要么改变

private Window _mainWindow;

private MainWindow _mainWindow;

或像这样转换您的方法调用

((MainWindow)_mainWindow).DoSomething();
于 2014-05-28T10:26:21.433 回答