消除Windows窗体刷新项目



我们在使用C#和.Net 2.0的windows窗体中有一个相当复杂的GUI。我的问题是,每当我在GUI上拖动任何窗口时,它都会在表单上留下工件。我一辈子都想不出如何消除它。我曾尝试启用双缓冲,但它只起到帮助作用,并不能消除问题。其他应用程序似乎没有这个问题,我想知道我们做错了什么。

响应答案更新

大多数应用程序只是使用面板上的一组第三方控件(Infrastics)。据我所知,除了基本的(非cpu密集型)鼠标点击处理之外,GUI线程中什么都没做。

您可能在GUI线程上做了太多的工作。将一些工作卸载到后台线程将释放GUI,以便更快地处理Windows消息。

与Jon B的答案相关,如果您的应用程序使用.NET中的Graphics对象进行大量绘图,那么这些方法相对于Windows API调用来说相当缓慢。

另一种可能性是,您的GUI可能没有在OnPaint事件中更新自己。有时,自定义图形代码会通过计时器事件更新图形曲面,或者仅在需要显示的内容发生更改时才更新图形曲面。这样编写的代码似乎在大多数情况下都能工作,但当另一个窗口在您的窗口上移动时,会产生您所描述的问题。

最新更新