我有一个用户可以用鼠标调整大小的控件。当它们移动到右侧时,我只需更改宽度,一切正常。
但是,当它们移动左侧尺寸时,我必须更改“左侧”和“宽度”属性。控件的右侧明显抽搐,在新位置显示旧宽度。
如果我使用边界同时设置左侧和宽度,它仍然会抽搐;是否将 SetStyle 与 UserPaint、Opaque、OptimizedDoubleBuffer、AllPaintingInWmPaint 或 ResizeRedraw 中的任何一个一起使用;以及是否是双缓冲的。如果我在控件或其父控件上调用 SuspendLayout()/ResumeLayout(),它仍然会抽搐。
当我更改控件的左侧位置和宽度时,如何阻止控件抽搐?
您可能想尝试致电Control.SuspendLayout()
在移动/调整大小之前在包含表单上,然后Control.ResumeLayout()
.
听起来无论您将控件设置为哪种模式,当您更改边界时触发的某些事件都会在设置两个值之前重新绘制它。可能和形式有关系。
EDIT:我看到了这个类似的问题 https://stackoverflow.com/questions/64272/how-to-eliminate-flicker-in-windowsforms-custom-control-when-scrolling关于SO,您提到您已经使用过 SetStyle(),但也许您可以选择一些选项组合来给您带来所需的效果。
希望有帮助!
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)