积极答复者
各位有遇到过TopMost失效的情况吗?

问题
-
窗体属性如下:
AllowsTransparency=True
WindowStyle=None
偶然会被Chrome浏览器挡住。。。
================================================
不好意思,我之前的表述有点失误,简单来说就是一个设置了TopMost的窗口,偶尔TopMost会失效(TopMost属性是在XAML里面设置的,就再没更改过) 具体表现是:(Chrome浏览器用着用着,本来我置顶的窗口就变成了不置顶了,任何一个窗口都能挡住它,如果单击一下它的话,又变成置顶了) 具体情况跟这里一样http://stackoverflow.com/questions/3729369/topmost-is-not-topmost-always-wpf我的环境是Win7&VS2010 .NET4项目
- 已编辑 Killer_Feng 2011年3月8日 15:23
答案
-
我尝试着根据你提供的条件重现你的问题,但是没有重现成功,我窗体的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.
- 已标记为答案 Killer_Feng 2011年3月23日 2:49
全部回复
-
对于你的表述不是很清楚啊,能详细的说一下情况么,最好能让我重现你的问题。
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.
-
你同时也设置了 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.
-
对于你的表述不是很清楚啊,能详细的说一下情况么,最好能让我重现你的问题。
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.
-
我尝试着根据你提供的条件重现你的问题,但是没有重现成功,我窗体的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.
- 已标记为答案 Killer_Feng 2011年3月23日 2:49
-
第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一次。。。
-
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.
-
能否给我一个回复?
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.