Windows窗体/ DatagridView屏幕闪烁

时间:2010-07-01 20:26:15

标签: winforms datagridview flicker

有没有人遇到.Net Windows窗体应用导致严重桌面闪烁的情况?

我有一个Windows窗体应用程序(.Net 3.5,C#),在usercontrol中有一个datagridview。 偶尔,在同时运行其他应用程序时(我用Louts Notes看到它,但最糟糕的行为是路透社Bridge Station的用户),切换到我的应用程序然后转到另一个应用程序会导致整个桌面闪烁,冻结所有用户交互,从几秒钟到接近一分钟。 (所有使用Windows XP Professional的用户) 即使网格中有少量数据,也会发生这种情况 我没有在应用程序中进行任何自定义绘制,我很确定我的代码目前都没有运行任何刷新或重新绘制。

我已经启用了双缓冲,因此这不是解决方案。

我发现(在MS论坛中)有一件有趣的事情是,设置表单的TransparencyKey可以解决问题 - 有时候。 (特别是对于Louts Notes用户,但不适用于Bridge Station用户。) 受影响的用户正在通过在切换到其他应用之前最小化数据输入后的应用程序来解决此问题。 我会非常感激任何想法,因为我正在梳理我的头发。我开始时没有太多头发。

YS

2 个答案:

答案 0 :(得分:1)

如果在从visual studio调试时发生这种情况,您可以尝试启用Framework debuggingTracepoints将日志条目写入“输出”窗口,这种技术对于了解奇怪的Winforms问题非常有用。

一旦你找到了你认为被过度或不必要地调用的东西,你就可以坚持一个断点并查看堆栈,看看是什么导致了这个问题。

答案 1 :(得分:0)

使用盲松鼠学校的故障排除,我似乎找到了一个坚果...我的意思是解决方法 - 我将显示器硬件加速度调低到最小值(略高于“无”)。这个在一起设置了TransparencyKey,看起来它解决了我的问题。

在最后的分析中,虽然这表明显示驱动程序存在问题(可能是多显示器特定的),但也存在.NET问题,如 1)问题只发生在程序运行时。 2)更新测试机器上的驱动程序并不能解决问题。