是这样的,程序从一个登陆界面进去,然后出来一个Splash Form显示Loading各个模块,最后出来一个应用程序主界面。
现在问题是,用户在登陆界面点了确定,然后转到其他程序了,比如Word,或者Outlook写E-Mail了,过了一会,应用程序主界面会出来而且TopMost盖住了用户的Word或者OutLook。请问怎么做到检测用户当前活动的应用程序,如果不是自己,就让主界面放在背后?

解决方案 »

  1.   

    你的Splash Form用模态显示不就可以了么?不用设置TopMost=true
      

  2.   

    我没设置任何TopMost=true登陆界面是模态的
    Splash Form是在线程里面的,只不过显示Loading状态,没关系
      

  3.   

    不用模态,模态会阻止主窗口的运行。
    将Splash窗口的父窗口设为主窗口就可以了。
      

  4.   

    给你的主窗口添加如下的代码试试看(VS2005中好使):
    protected override bool ShowWithoutActivation
    {
    get
    {
    return true;
    }
    }
      

  5.   

    to 应用程序主界面会出来而且TopMost盖住了用户的Word或者OutLook原因是你的应用程序取得了焦点focus();解决方法有很多,你可以把应用程序做成系统托盘来试试。
      

  6.   

    将Splash窗口的父窗口设为主窗口就可以了
    --------------------------------------
    我在最后才new主窗口的,不是一开始
      

  7.   

    to hbxtlhx(平民百姓) : 刚试了,不灵
      

  8.   

    你这样来做看一下:
    在登录窗口中用户点登录不关闭登录的界面,而是等Flash窗体出来后再关闭登录窗口,同样,等主窗口显示完全后再把Flash窗口关闭,这样就保证了应用程序不会把焦点转换到别的应用程序中了.
      

  9.   

    可以在splash窗口做系统消息的监控,发现当前窗口的焦点被移开的时候,登记当前激活的窗体,然后在打开主窗体的时候,把记录的窗体句柄传过去,让主窗体重新设置当前的激活窗体
      

  10.   

    在登陆界面的窗體的Leave事件中設定主窗體最小化就可以了