this.TopMost = true;
this.TopMost = false;

解决方案 »

  1.   

    (de)active 消息在窗口切换时有时候会接受不到,不行
      

  2.   


    private Form2 si;
    private void Form1_Deactivate(object sender, System.EventArgs e)
    { if(this.si!=null)
    {
    if(this.si.TopMost)
    {
    this.si.TopMost=false;
    }
    }
    } private void Form1_Activated(object sender, System.EventArgs e)
    {
    if(this.si!=null)
    {
    if(!this.si.TopMost)
    {
    this.si.TopMost=true;
    }
    }
                       } private void Form2_Activated(object sender, System.EventArgs e)
    {
    this.TopMost=true;
    }
    private void Form2_Deactivate(object sender, System.EventArgs e)
    {
    this.TopMost=false;
    }不过FORM1好像老是很难获得FOCUS,理论上应该判断在FORM2失去焦点的时刻来判断是不是由FORM1来获得FOCUS如果是的话,就无须再设置FORM2.TOPMOST为FALSE了。还请高手来继续回答吧,我仅是提供一个思路而已!thingking...............
      

  3.   

    Form.Owner 属性 获取或设置拥有此窗体的窗体。
    若要使某窗体归另一个窗体所有,请为其 Owner 属性分配一个对将成为所有者的窗体的引用。当一个窗体归另一窗体所有时,它便随着所有者窗体最小化和关闭。例如,如果 Form2 归窗体 Form1 所有,则关闭或最小化 Form1 时,也会关闭或最小化 Form2。并且附属窗体从不显示在其所有者窗体后面。可以将附属窗体用于查找和替换窗口之类的窗口,当选定所有者窗体时,这些窗口不应消失。若要确定某父窗体拥有的窗体,请使用 OwnedForms 属性。
      

  4.   

    form2.Owner = form1;
    这样form2就只对form1 TopMost 而不对其他应用程序的窗口