【问题标题】:Windows Forms/DatagridView Screen FlickeringWindows 窗体/DatagridView 屏幕闪烁
【发布时间】:2011-03-10 20:06:39
【问题描述】:

有没有人遇到过 .Net Windows Forms 应用程序导致桌面严重闪烁的情况?

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

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

我(在 MS 论坛中)发现的一件有趣的事情是,设置表单的 TransparencyKey 可以解决问题 - 有时。 (专门针对 Louts Notes 用户,但不适用于 Bridge Station 用户。) 仍然受到影响的用户正在通过在数据输入后最小化应用程序来解决这个问题,然后再切换到其他应用程序。 任何想法都将不胜感激,因为我正在为此拔头发。而且我没有太多的头发开始。

是的

【问题讨论】:

  • 不幸的是,我们在工作中也使用了 Lotus Notes,我们也遇到了同样的问题,也使用了双缓冲。好问题!希望有人能帮忙

标签: winforms datagridview flicker


【解决方案1】:

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

一旦您找到了一些您认为被过度或不必要地调用的东西,您就可以插入断点并查看堆栈以查看导致问题的原因。

【讨论】:

  • 感谢您的回复,但我已经确定我的代码都没有导致问题。
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多