Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 双缓冲用户控件的刷新问题_C#_Winforms - Fatal编程技术网

C# 双缓冲用户控件的刷新问题

C# 双缓冲用户控件的刷新问题,c#,winforms,C#,Winforms,我有一个相当复杂的双缓冲用户绘制控件。效果非常好,除非另一个窗口在其上移动。这将导致控件中出现未刷新的漏洞。它没有正确地重新粉刷自己。我已经尝试了所有常用的修复方法 SetStyle(ControlStyles.UserPaint, true); SetStyle(ControlStyles.AllPaintingInWmPaint, true); SetStyle(ControlStyles.DoubleBuffer, true); 没用。我在窗口中放置了一个计时器控

我有一个相当复杂的双缓冲用户绘制控件。效果非常好,除非另一个窗口在其上移动。这将导致控件中出现未刷新的漏洞。它没有正确地重新粉刷自己。我已经尝试了所有常用的修复方法

    SetStyle(ControlStyles.UserPaint, true);
    SetStyle(ControlStyles.AllPaintingInWmPaint, true);
    SetStyle(ControlStyles.DoubleBuffer, true);
没用。我在窗口中放置了一个计时器控件,并将其设置为每10毫秒刷新一次。这似乎非常模糊

如果我关闭双缓冲,控件将正确刷新,但由于闪烁而混乱


编辑:用户控件中没有子窗口。使用图形方法在绘制事件中绘制用户控件的整个曲面。使用WS_EX_COMPOSITED修复了拖拽问题,但tooptips在关闭时留下空白区域仍然存在问题。到目前为止,唯一的修复方法是刷新计时器,我希望有人了解更多的windows魔法。

听起来你正在接近Winforms绘图的极限:)看看这里发布的这个问题的答案:

WS_EX_COMPOSITED似乎修复了重叠窗口的重新绘制。工具提示仍然存在导致绘制空白区域的问题。但我很高兴在这一点上解决任何问题。