DotNET的Form有一个Topmost的属性,设置为True之后,可以将窗口设定为屏幕的最顶端。但是在整个Windows中Topmost的窗口只有一个也就是最后设定了Topmost风格的那一个。
有什么办法能让我的窗口始终处于窗口最上端,而与其它窗口或者其他应用程序使用的窗口是否设置Topmost风格无关。希望能够获得好的建议,谢谢大家!

解决方案 »

  1.   

    试一下将所有窗体固定位置:
    this.Location = new Point(0,y);
      

  2.   

    To ChengKing:
    这样做有什么帮助么?我说的是Z-Order的最上端。
      

  3.   

    在2000以上操作系统好像做了设置,不可能永远占有TOP的吧,可能出路在其他窗口MOSTTOP后,你的窗口再MOSTTOP一下..
      

  4.   

    这个应该是最不到DI
    据说98/ME下可以hack gui内核搞定,直接修改z order,2K/XP能做这个的可能性非常小
      

  5.   

    一个笨方法,用定时器,定时调用SetWindowPos函数,把窗体设为最顶端。
      

  6.   

    肯定是做得到的,要不那些播放器的始终在最前面功能是怎么做的阿??不过不知道怎么做,关注ing
      

  7.   

    播放器没有吧? 看qq,msn等什么的上线通知,还不是在播放器上面
      

  8.   

    oyljerry兄说的没错,差不多就是这样的效果,只是我希望这个窗口始终处于最顶端,除非我把它销毁。
      

  9.   

    逻辑上就有问题,自相矛盾了,以你的矛戳你的盾,会怎样呢?
    假设真的有始终最顶窗口,你有两个这样的窗口,这两个哪个优先?
    如果你只是要比普通Topmost的窗口优先级高,那只有去找M$去解决了,至少目前没有这种逻辑
      

  10.   

    To viena(维也纳nn-实心木头人)
    如果有两个这样的窗口,自然可以通过自己的程序逻辑去解决。
    我也举一个比较常见的例子,WINAMP大家都用过的,我装的是2.9,当设置成为TOPMOST之后,WINAMP的窗口就是最顶层窗口了,但是大家都知道,WINAMP的播放器是由3-4个窗口组成的,每一个窗口都是独立的,当设置成为TOPMOST之后,所有的窗口是最顶端的。看看窗口风格每一个窗口都有WS_EX_TOPMOST的,当然可能还有一些其它的机制处理,我想和大家讨论的,也正是用什么具体的方法去实现。