我有一个控件,用户可以用鼠标调整大小.当他们移动右侧时,我只是改变宽度,一切正常.
但是,当他们移动左侧大小时,我必须更改"左"和"宽度"属性.控制器的右侧明显抽搐,显示新位置的旧宽度.
如果我使用Bounds一次设置左侧和宽度,它仍会抽搐; 我是否将SetStyle与UserPaint,Opaque,OptimizedDoubleBuffer,AllPaintingInWmPaint或ResizeRedraw中的任何一个一起使用; 以及它是否是双缓冲的.如果我在控件或其父控件上调用SuspendLayout()/ ResumeLayout(),它仍会抽搐.
当我改变左侧位置和宽度时,如何阻止控制旋转?
您可能想要Control.SuspendLayout()
在移动/调整大小之前尝试调用包含的表单,然后Control.ResumeLayout()
.
听起来无论您将控件设置为什么模式,更改边界时触发的某些事件都会在设置两个值之前重绘它.它可能与表单有关.
编辑:我在SO上看到了这个类似的问题,你提到你已经使用过SetStyle(),但也许你可以选择一些选项组合,它们会给你带来理想的效果.
希望有所帮助!