场景:  
1 。 主窗体 :创建子窗体对象 ,然后用 子窗体的Show方法将子窗体显示出来
     
       private void button1_Click(object sender, RoutedEventArgs e)
        {
            Window2 w = new Window2();
            w.Owner = this;
            w.Show();
        }
2 。 子窗体: 创建一个窗体, 然后用ShowDialog方法显示出来
 
        private void button1_Click(object sender, RoutedEventArgs e)
        {
            Window3 w = new Window3();
            w.Owner = this;
            w.ShowDialog();
        }
3 。 将窗体3 关闭;
4。 将窗体2 关闭;
5 。 主窗体未被激活 ,其他程序被激活显示在上层。如果不执行2,3步骤 ,结果是 窗体2关闭时 主窗体激活处于系统上层。请问为什么 子窗体关闭时主窗体为什么没有被激活

解决方案 »

  1.   

    为什么不都用 w.ShowDialog();
      

  2.   

    因为在showDialog的时候,WINDOWS API干了这么一件事,就是将窗体的z-index的最靠前赋值给了window2,也就是将你最开始的主窗体的z-index的值改变了。所以但是,如果
                Window2 w = new Window2();
                w.Owner = this;
                w.Show();
    也是用
    showdialog(),则z-index会传回到主窗体,就不会出现你说的这个情况了。不信你可以试一试。
      

  3.   

    必须都用 ShowDialog ?