zoukankan      html  css  js  c++  java
  • 父窗口与子窗口的层次关系

                         父窗口与子窗口的层次关系

                              周银辉


    关于子窗体的层级关系总结一下哈,希望能对大家有些帮助
    假设有这样两个窗体: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();


    }

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

    DEMO:DialogDemo.zip

  • 相关阅读:
    解决大量TCPIP连接后出现“因为系统缺乏足够缓冲区空间或者因为队列已满无法执行套接字上操作”的问题
    网站/网页 变灰的方法
    [收藏]General things to take into consideration while doing socket programming.
    数据库主体在该数据库中拥有 架构,无法删除解决方法
    Word字体与像素的对应关系
    50个网站设计开发必备的资源素材网站
    apache实现页面重定向(地址跳转)
    JS eval(function(p,a,c,k,e,r){e=function(c)*****解密
    JS打印指定区域内容
    如何才能做到网站高并发访问? .
  • 原文地址:https://www.cnblogs.com/zhouyinhui/p/1345580.html
Copyright © 2011-2022 走看看