none
各位有遇到过TopMost失效的情况吗? RRS feed

  • 问题

  • 窗体属性如下:

    AllowsTransparency=True

    WindowStyle=None

     

    偶然会被Chrome浏览器挡住。。。

    ================================================

    不好意思,我之前的表述有点失误,简单来说就是一个设置了TopMost的窗口,偶尔TopMost会失效(TopMost属性是在XAML里面设置的,就再没更改过) 具体表现是:(Chrome浏览器用着用着,本来我置顶的窗口就变成了不置顶了,任何一个窗口都能挡住它,如果单击一下它的话,又变成置顶了) 具体情况跟这里一样http://stackoverflow.com/questions/3729369/topmost-is-not-topmost-always-wpf

    我的环境是Win7&VS2010 .NET4项目

    2011年3月8日 3:18

答案

  • 我尝试着根据你提供的条件重现你的问题,但是没有重现成功,我窗体的TopMost属性工作是正常的(我也是尝试用Chrome浏览器覆盖Window的)。

    根据你的描述“偶尔出现”,我想这个就增大了我重现的难度。

    首先,先回答你的问题:

    -->        各位有遇到过TopMost失效的情况吗?

    我没有遇到过你描述的这种情况。

    其次,我觉得要解决你的问题,我需要更多的信息,希望你能help me。

    1)是不是你有其他 Activated窗口也设置了这个TopMost属性啊? 虽然这个可能性不是很大,因为“任何一个窗口都能挡住它”,但是你可以考虑一下。

    2)你的项目是多线程的么?

    3)在这个窗口不是TopMost的时候,你可以看看你的Window的TopMost属性是否还是True,如果不是True,我想是不是你里面的某一个控件改掉了这个属性。

    4)你这个Window是Host在其他的Window或者浏览器里面的么?

    另一方面,你可以尝试着重新设置你的TopMost属性去解决你的问题,比如处理Window的Deactivated事件:

    private void Window_Deactivated(object sender, EventArgs e)

    {

        this.Topmost = true;

    }

     

    Best regards,


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月9日 4:48
    版主

全部回复

  • 对于你的表述不是很清楚啊,能详细的说一下情况么,最好能让我重现你的问题。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月8日 7:24
    版主
  • 你同时也设置了 TopMost 了吗? 我比较感兴趣的是是不是只有Chrome会偶尔挡住,还是其它的也会,你需要多测试下,因为这样有助于确定问题的范围,是WPF引起,操作系统引起还是第三方其它产品引起的。 谢谢。


    Bob Bao [MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月8日 8:49
    版主
  • 是的,已经设置了TopMost = True,而且也没改变过。 在Window的OnSourceInitialized事件里面用SetWindowLong设置了WS_POPUP后效果好了点(但偶尔还是会发生以上情况,只是感觉发生的概率小了点) 具体情况跟这里的差不多http://stackoverflow.com/questions/3729369/topmost-is-not-topmost-always-wpf
    2011年3月8日 15:05
  • 对于你的表述不是很清楚啊,能详细的说一下情况么,最好能让我重现你的问题。


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    不好意思,我刚才更新了一下
    2011年3月8日 15:06
  • 我尝试着根据你提供的条件重现你的问题,但是没有重现成功,我窗体的TopMost属性工作是正常的(我也是尝试用Chrome浏览器覆盖Window的)。

    根据你的描述“偶尔出现”,我想这个就增大了我重现的难度。

    首先,先回答你的问题:

    -->        各位有遇到过TopMost失效的情况吗?

    我没有遇到过你描述的这种情况。

    其次,我觉得要解决你的问题,我需要更多的信息,希望你能help me。

    1)是不是你有其他 Activated窗口也设置了这个TopMost属性啊? 虽然这个可能性不是很大,因为“任何一个窗口都能挡住它”,但是你可以考虑一下。

    2)你的项目是多线程的么?

    3)在这个窗口不是TopMost的时候,你可以看看你的Window的TopMost属性是否还是True,如果不是True,我想是不是你里面的某一个控件改掉了这个属性。

    4)你这个Window是Host在其他的Window或者浏览器里面的么?

    另一方面,你可以尝试着重新设置你的TopMost属性去解决你的问题,比如处理Window的Deactivated事件:

    private void Window_Deactivated(object sender, EventArgs e)

    {

        this.Topmost = true;

    }

     

    Best regards,


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月9日 4:48
    版主
  • 第1点不可能是的.

    第2点:项目是普通单线程

    第3点:没有控件或后台代码会改变TopMost,因为我的程序是要做成Alway TopMost的,我也核查了代码,没这个情况。

    第4点:这是一个普通的WPF Window,没有Host WinForm Control或者Win32 Window,也没有Host在其他Window或浏览器里面

    第5点:处理Deactivated事件等我测试了再跟你反馈,不过估计没用,因为窗体是在Deactivated后很久才TopMost失效的。

    ===============================

    个人估计是Windows的问题,因为有一些本来应该TopMost的窗体时候TopMost也会失效,能被其他普通窗体给挡住,然后单击它的话,TopMost又回来了。。。例如讯雷显示速度的小窗口,金山、360的网络流量监控的小窗口。

    我不知道WPF窗体TopMost失效的时候其他置顶的窗口是否也会失效(例如讯雷金山那些),之前sb了一下,没注意到- -!

    真不想做个线程隔段时间就reflesh topmost一次。。。

    2011年3月9日 16:07
  • Hi Killer_Feng,

    关于你的问题有什么更新么?

    如果你的问题得以解决或者采取了其他方案,别忘了关闭帖子(标记为答复),谢谢。

     

    Best regards,


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月14日 14:58
    版主
  • 能否给我一个回复?


    Sheldon _Xiao[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年3月22日 13:18
    版主
  • Hi Sheldon _Xiao,

    没更新了,没想到解决方案- -!

    我还是关贴吧!

    THX

    2011年3月23日 2:48