这里所讲的互斥是两个窗口不同时存在,打开一,只显示一;点一相关按钮显示二,关闭一;关闭二,显示一。

窗口一: history
winResult winChoice = new winResult();
winChoice.Owner = this;
winChoice.IsShow = true;
winChoice.Activate();
winChoice.Update();
history.hide();
窗口二:
if (this.Owner != null&&Owner.Name=="history")
{
Owner.Show();
}

以下是一些窗口常见问题:

关于子窗体的层级关系总结一下哈,希望能对大家有些帮助 假设有这样两个窗体:RootWindow,SubWindow,在RootWindow中引发某事件而显示SubWindow

1,如果弹出窗体(比如SubWindow)仅仅是调用Show方法,并且没有设置其Owner属性:

ClassRootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Show();
}
}

那么弹出窗体(SubWindow)和源窗体(如RootWindow)没有任何层级关系,也就是说不会以模态方式呈现(SubWindow不会阻挡用户 对RootWindow的操作)。SubWindow在Show出来时在RootWindow的上方,但用户可以通过鼠标点击等方式将 RootWindow带到SubWindow前方来而遮盖RootWindow的内容,也就是说,享有用户焦点的窗口将被带到最前方。并且 RootWindow和SubWindow的最小化与还原操作互不影响。

2,如果弹出窗体(比如SubWindow)调用Show方法,并且设置了其Owner属性:

ClassRootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Owner = this;
sw.Show();
}
}

那么弹出窗体(SubWindow)和源窗体(如RootWindow)将有着父子关系,也就是说,弹出窗体将永远在源窗体的上方,但并不是模式的,用户可以操作源窗体,当源窗体被最小化或还原的时候,弹出窗体也将随着最小化和还原,反之不成立。
3,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且没有设置其Owner属性:

 ClassRootWindow
{
voidFoo()
{
SubWindow sw = new SubWindow();
sw.ShowDialog();
}
}

弹出窗体将以模式的方式出现,但没有父子关系,弹出窗体将阻止用户对源窗体的操作,但点击源窗体时弹出窗体不会出现闪动效果。弹出窗体最小化时,源窗体会 随之最小化,但还原操作却不可以(很奇怪)。这里有一个值得注意的问题是:在此模式下,如果弹出窗体不在任务栏显示 (ShowInTaskBar==false),而源窗体显示在任务栏,用户的操作可能会导致弹出窗口被隐藏在源窗口背后而没办法切换出来(除非使用 Alt+TAB)。
4,如果弹出窗体(SubWindow)以ShowDialog的方式显示,并且设置了其Owner属性:

 Class RootWindow
{
void Foo()
{
SubWindow sw = newSubWindow();
sw.Owner = this;
sw.ShowDialog();
}

弹出窗体将以模式的方式出现,并且有父子关系,弹出窗体将永远处于源窗体上方,弹出窗体将阻止用户对源窗体的操作,并且点击源窗体时弹出窗体会出现闪动效果。弹出窗体最小化或还原时,源窗体会随之最小化或还原

WPF中两个窗口的互斥的更多相关文章

  1. VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法

    原文:VS编程,WPF中两个滚动条 ScrollViewer 同步滚动的一种方法 版权声明:我不生产代码,我只是代码的搬运工. https://blog.csdn.net/qq_43307934/ar ...

  2. 如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI

    原文:如何监视 WPF 中的所有窗口,在所有窗口中订阅事件或者附加 UI 由于 WPF 路由事件(主要是隧道和冒泡)的存在,我们很容易能够通过只监听窗口中的某些事件使得整个窗口中所有控件发生的事件都被 ...

  3. 【.net 深呼吸】WPF 中的父子窗口

    与 WinForm 不同,WPF 并没有 MDI 窗口,但 WPF 的窗口之间是可以存在“父子”关系的. 我们会发现,Window 类公开了一个属性叫 Owner,这个属性是可读可写的,从名字上我们也 ...

  4. C# 在winform或者wpf中显示控制台窗口

    这儿需要使用两个系统函数: BOOL WINAPI FreeConsole(void); //// 关闭控制台窗口,参考:http://msdn.microsoft.com/en-us/library ...

  5. WinForm 中两个窗口之间传递数据

    方法有很多种,这里介绍项目中使用的两种 一.通过委托+事件的方法进行传值 (点击Form2中的button1按钮,将会把Form2中的textbox.text 传给Form1中的 lable.text ...

  6. WPF中实现登陆窗口的“记住帐号”功能

    1.在Login.xaml中添加资源: <XmlDataProvider x:Key="XmlDataProvider" Source="pack://applic ...

  7. WPF 中保存 window(窗口)或者canvas成图片

    最近需要用到这个功能,搜了一下不少代码有问题 ,找到一个效果比较好的,支持多级子元素 记一下. private void button_save_window_Click(object sender, ...

  8. WPF中利用后台代码实现窗口分栏动态改变

    在WPF中实现窗口分栏并能够通过鼠标改变大小已经非常容易,例如将一个GRID分成竖排三栏显示,就可以将GRID先分成5列,其中两个固定列放GridSplitter. <Grid Backgrou ...

  9. C# WPF 中WebBrowser拖动来移动窗口,改变窗口位置

    前言 wpf中的WebBrowser相比之前的winform阉割了不少东西,也增加了不少东西,但是msdn对wpf也没有较好的文档 WebBrowser可以说是一个.NET控件,相对于WPF中的控件, ...

随机推荐

  1. NVL 和NVL2函数

    NVL 和NVL2函数 NVL函数: nvl(exp1,exp2) -->判断exp1是否是null,如果exp1不是则返回exp1的值,如果exp1为null则返回exp2 nvl2函数: n ...

  2. HDU 3688 Searchlights(并查集)

    Problem Description There is a piece of grids land of size n×m. Chandler and his team take responsib ...

  3. struts_23_xwork校验器列表使用例子

    required 必填校验器 <field-validator type="required"> <message>性别不能为空!</message& ...

  4. 自建目录中jsp页面访问servlet路径出错404

    ---恢复内容开始--- 自建目录中jsp页面访问servlet路径出错404 使用eclipse建立的项目,总是会遇到路径问题,比如jsp页面访问servlet,jsp在默认的路径.jsp在自建目录 ...

  5. JS货币数字转换中文

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...

  6. NXP QN9020

    NXP的这个BLE蓝牙方案也很有趣, 一起研究. 这个函数在app_gpa_task.c里面 ***************************************************** ...

  7. Java类加载信息的顺序:包括静态代码快、静态类变量、非静态代码快、构造方法、普通方法

    JVM运行之前会执行一个叫做类加载器的子系统,叫做ClassLoader,那么类里面那么多“元素”,究竟是个什么顺序呢,写几行代码测试一下,通过给每个方法和代码快和静态变量打上断点来测试: class ...

  8. How to create UrlSlug in Asp.Net MVC

    转自:http://www.ehsanghanbari.com/Post/20/how-to-create-urlslug-in-aspnet-mvc UrlSlug Is a way of gene ...

  9. altera soc体验之旅 FPGA与ARM的窃窃私语

      喜大普奔,公司要评估用SOC做产品,我就自然而然的被安排了学习和评估的工作,于是,每天的工作就是开始研究soc了.其实,只要能静下心来学习,一切都还是能够弄出来的. 以前像个无头苍蝇一样到处乱撞, ...

  10. linux,shell输入反斜杠显示'W'。

    linux,shell输入反斜杠显示'W'. solution: 字体必须为"Courier New".