C# 如何在调用window.showdialog后以编程方式关闭窗口?

C# 如何在调用window.showdialog后以编程方式关闭窗口?,c#,winforms,.net-4.5,prism-4,C#,Winforms,.net 4.5,Prism 4,我正在创建一个测试方法,在该方法中,我使用window.showdialog方法打开一个窗口,但在我单击close按钮之前,不会开始执行进一步的代码 以下是我的测试方法: [TestMethod] public void TestProductView() { SynchronizationContext.SetSynchronizationContext(new SynchronizationContext()); ProductTreeDragDropViewModel v

我正在创建一个测试方法,在该方法中,我使用window.showdialog方法打开一个窗口,但在我单击close按钮之前,不会开始执行进一步的代码

以下是我的测试方法:

[TestMethod]
public void TestProductView()
{
    SynchronizationContext.SetSynchronizationContext(new SynchronizationContext());

    ProductTreeDragDropViewModel viewmodel = new ProductTreeDragDropViewModel();
    System.Windows.Window window = new System.Windows.Window();

    ProductTreeDragDrop screen = new ProductTreeDragDrop();

    screen.ViewModel = viewmodel;
    window.Content = screen;

    window.ShowDialog();
    DoEvents();
    Thread.Sleep(9000);

 }

public  void DoEvents()
{
   DispatcherFrame frame = new DispatcherFrame();
   Dispatcher.CurrentDispatcher.BeginInvoke(DispatcherPriority.Background, new   DispatcherOperationCallback(ExitFrame), frame);
    Dispatcher.PushFrame(frame);
}
注意:如果使用window.show方法,则viewmodels的数据源中不会返回数据


现在,如何在执行window.showdialog方法后以编程方式关闭窗口???

使用showdialog启动对话框时,控件将转到新打开的对话框。因此,您需要在启动的对话框中执行关闭操作

或者,你可以试试

window.Show();
Thread.Sleep(10000);
window.Close();
DoEvents();

主要问题是window.showdialog之后的代码未执行。。。直到我不按colse按钮。你是对的,奎师那,但我不知道如何处理新打开的对话框??你能帮我做同样的事情吗?我不确定你在新打开的对话框中执行的是什么。请在你提到的屏幕上发布代码。这可能会有帮助。我正在创建测试方法,因此我们不能转换成在实际窗口中编写的代码。只是大声思考。在这种情况下,您需要使用window.Show。你应该启动窗口,让线程休眠一段时间,关闭窗口并关闭事件。没有睡眠的问题可能是,在启动窗口打开后,系统继续执行事件,但此时需要在窗口中执行的操作尚未完成。使用选项更新了答案。如果有效,请投票和/或标记为答案。