c# - 没有按钮的对话框内的WPF关闭对话框

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了c# - 没有按钮的对话框内的WPF关闭对话框相关的知识,希望对你有一定的参考价值。

SecondWindow secdWin = new SecondWindow();
secdWin.ShowDialog();

上面的代码来自我的MainWindow.xaml.cs

新窗口产生并执行它想要做的事情,然后我尝试从内部关闭它。

这是来自我的SecondWindow.xaml.cs

public partial class SecondWindow : Window
{
    public SecondWindow()
    {
        InitializeComponent();
        Task initTask = new Task(() => Init());
        initTask.Start();
    }

    private void Init()
    {
        server = new ServerReply();
        //.. doing stuff with the server.
        server.Reply = response.Content;
        //I want to close the SecondWindow here.
    }
}

我试过了:

var w = Application.Current.Windows[0];
w.Close();

它不起作用,我也尝试过:

this.Close();

但无论我做什么,我得到的只是:

Exception thrown: 'System.InvalidOperationException' in WindowsBase.dll
答案

您应该在Init方法中使用Dispatcher。例如,像这样:

Application.Current.Dispatcher.Invoke(() => this.Close());
另一答案

await Loaded事件处理程序中运行和async任务:

public SecondWindow()
{
    InitializeComponent();
    Loaded += WindowLoaded;
}

private async void WindowLoaded(object sender, RoutedEventArgs e)
{
    await Task.Run(() => Init());
    Close();
}

以上是关于c# - 没有按钮的对话框内的WPF关闭对话框的主要内容,如果未能解决你的问题,请参考以下文章

单击对话框内的asp按钮时,如何防止关闭jQuery模式对话框?

按下 Enter 键时如何关闭 WPF 窗口(对话框)?

关闭c++MFC的主窗体,先弹出对话框询问“是不是要关闭”,点击确定取消按钮进行确认。

强制验证 WPF 中的绑定控件

android 弹出对话框后禁止back键 必须按对话框里的确定或取消按钮才能关闭对话框

为对话框启用关闭按钮 c++ winapi