2011-03-01 91 views
0

DataGridView控件存在问题。在某些操作中,网格被半透明对话框覆盖(向用户指示操作并防止用户按下按钮等)。在此期间,电网以约1Hz的频率更新。在Windows XP下,DataGridView控件偶尔会在遮罩对话框上方“闪烁”一秒 - 没有足够的时间去实际做任何事情,但仍然有点不舒服。我还注意到,在运行Window 7的开发机器上,问题没有显示出来。我使用.NET v3.5。任何帮助,将不胜感激。即使被透明窗口遮罩,DataGridView也会闪烁

+0

对话框模式?你有测试片段吗? – 2011-03-01 21:45:52

+0

假设您使用不透明度作为对话框,这必须是视频适配器工件。它是实现透明度的方法,它是通过硬件覆盖来完成的。英特尔图形也许。 – 2011-03-01 21:54:11

回答

0

我只有Xp有一个奇怪的闪烁问题(虽然这是相似之处结束)。这给在传给你的问题形式的尝试:

Protected Overrides ReadOnly Property CreateParams() As CreateParams 
Get 
    Dim cp As CreateParams = MyBase.CreateParams 
    cp.ExStyle = cp.ExStyle Or &H2000000 
    Return cp 
End Get 
End Property 
+0

这是什么风格?双缓冲? – 2011-03-01 22:30:50

+0

我在6个月前查找了这个问题,并在我的代码中修复了类似的问题。我相信这就是这个样子:WS_EX_TRANSPARENT指定用这种样式创建的窗口是透明的。也就是说,窗口下方的任何窗口都不会被窗口遮挡。使用此样式创建的窗口只有在更新其下的所有同级窗口后才会收到WM_PAINT消息。 – 2011-03-01 22:37:02

0

的Win32形式的不透明度是不是真正的透明度 - 但它下面的图像的副本。这是闪烁的原因,而不是我曾经见过的解决方法。

您的Win7问题也有它 - 但由于该机器和图形卡处理速度更快,您实际上没有看到重绘。

WPF使用真正的不透明度,因此不会有这个问题。