gpt4 book ai didi

C#调整大小时锚定控件 "shakes"

转载 作者:行者123 更新时间:2023-11-30 12:25:36 25 4
gpt4 key购买 nike

我的应用程序上有一个可以由用户调整大小的控件,它有一些按钮固定在右上角,还有一个滚动条。
问题在于,当调整控件大小时,锚定在右侧的控件也会更改位置,并且仅在几毫秒后控件才进入正确位置。因此,看起来子控件在调整父控件大小时“摇晃”。

我已经尝试过各种方法,比如在父控件上使用 SuspendLayoutResumeLayout,将每个控件上的双缓冲和其他样式设置为 true,设置 WS_EX_COMPOSITED 位,但似乎无法解决此问题。
这个问题也存在于其他应用程序中,非常烦人。

那么有没有办法在 .net 上解决这个问题?
也许让它将所有内容渲染到后备缓冲区,然后当一切 完成后将其渲染到屏幕?

最佳答案

我会创建一个在调整大小完成后触发的新事件,使用小定时器魔术停止并启动一个定时器,每次调整大小事件的间隔约为 50 毫秒,您可以创建这种假的 ResizeEnd 事件。

在第一个调整大小事件中,我将使用 dllimport 调用(不记得它是什么)停止绘制 UI,以停止绘制窗口或控件的内容。然后在调整大小完成后,使用相同的 dllimport 调用再次启用绘图。

效果是它只会在调整大小完成后重新绘制自己,或者如果您在调整大小时暂停,则每 50 毫秒重新绘制一次。

调整结束:WinForms - action after resize event

暂停绘图:How do I suspend painting for a control and its children?

关于C#调整大小时锚定控件 "shakes",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31102047/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com