作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我的应用程序上有一个可以由用户调整大小的控件,它有一些按钮固定在右上角,还有一个滚动条。
问题在于,当调整控件大小时,锚定在右侧的控件也会更改位置,并且仅在几毫秒后控件才进入正确位置。因此,看起来子控件在调整父控件大小时“摇晃”。
我已经尝试过各种方法,比如在父控件上使用 SuspendLayout
和 ResumeLayout
,将每个控件上的双缓冲和其他样式设置为 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/
我是一名优秀的程序员,十分优秀!