WPF:父窗口与子窗口的层次关系
来源:互联网 发布:经济学博士就业 知乎 编辑:程序博客网 时间:2024/06/07 18:47
关于子窗体的层级关系总结一下哈,希望能对大家有些帮助
假设有这样两个窗体: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();
}
弹出窗体将以模式的方式出现,并且有父子关系,弹出窗体将永远处于源窗体上方,弹出窗体将阻止用户对源窗体的操作,并且点击源窗体时弹出窗体会出现闪动效果。弹出窗体最小化或还原时,源窗体会随之最小化或还原。
转自:尚观知识库
原文链接:http://old.uplook.cn/biancheng/158/1586191/
- WPF:父窗口与子窗口的层次关系
- WPF:父窗口与子窗口的层次关系
- 父窗口与子窗口的层次关系
- 父窗口与子窗口的层次关系
- 父窗口与子窗口的层次关系
- 父窗口与子窗口的层次关系
- Qt中父窗口与子窗口之间的关系
- Qt中父窗口与子窗口之间的关系
- 父窗口与子窗口的操作
- Window 窗口层次关系
- Window 窗口层次关系
- Window 窗口层次关系
- Window 窗口层次关系
- Window 窗口层次关系
- Window 窗口层次关系
- Windows 窗口层次关系
- Window 窗口层次关系
- Window 窗口层次关系
- struts2 的工作流程
- Linux nm命令介绍
- java加密解密用法
- excel中的 sumif 和 countif 函数分析详解
- VTK Installation and Configuration with Qt in Ubuntu
- WPF:父窗口与子窗口的层次关系
- 关于easyui datagrid前台界面分页的问题
- Struts2 国际化
- 畸变校正技术
- #03 mnist loader
- android4.0新控件Switch方法解析
- VC中用内存映射文件处理大文件
- OpenMP: OpenMP在VC6下的使用
- Linux下软件常见安装方式