c#模态对话框从内部退出_c# – 如何在非模态对话框的顶部正确实现模态对话框?...

在WPF应用程序中,当从非模态窗口显示模态对话框时,主窗口会退到后台。本文探讨了这种行为的原因,并通过示例代码展示了问题所在。在关闭模态对话框后,主窗口不应退到后台,但实际表现如此。问题可能在于Window.Owner和Window.ShowDialog()的使用。示例代码包括Window1、Window2和Window3的定义,用于展示问题的发生情况。
摘要由CSDN通过智能技术生成

WPF应用程序中,我想实现以下似乎不能直接起作用的行为:

从主窗口(Window1),用户打开非模态窗口(Window2),并且该非模态窗口可以显示模态对话框(Window3).

问题是,只要显示模态对话框,当用户关闭对话框时,主窗口就会在后台消失(假设有其他应用程序的窗口打开).

我使用Window.Owner和Window.Show()/ Window.ShowDialog()的方式有什么不对,它是一个bug还是它不支持的东西?

以下简单的WPF应用程序演示了此行为:

public partial class Window1 : Window

{

public Window1()

{

InitializeComponent();

}

private void Button_Click(object sender,RoutedEventArgs e)

{

Window2 win = new Window2();

win.Owner = this;

win.Show();

}

}

public partial class Window2 : Window

{

public Window2()

{

InitializeComponent();

}

private void Button_Click(object sender,RoutedEventArgs e)

{

Window3 win = new Window3();

win.Owner = this;

win.ShowDialog();

}

private void btnClose_Click(object sender,RoutedEventArgs e)

{

this.Close();

}

}

public partial class Window3 : Window

{

public Window3()

{

InitializeComponent();

}

private void btnClose_Click(object sender,RoutedEventArgs e)

{

this.Close();

}

}

XAML Window1:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window1">

Show non-modal window

XAML Window2:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window2">

Show modal dialog

Close

XAML Window3:

xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"

xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"

Title="Window3">

Close

更新:修复了代码中的复制和粘贴错误.这是.NET 3.5 SP1,如果它很重要.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值