我尝试过类似的事情:
horizontalPictureScroller1.SuspendLayout();
horizontalPictureScroller1.DeleteSelectedImages();
horizontalPictureScroller1.ResumeLayout();
但是当我运行DeleteSelectedImages()方法时,它仍然在视觉上滞后。
有没有办法手动告诉控件不重绘自己,直到我告诉它再次开始自绘?
使用Windows窗体和.NET 4
答案 0 :(得分:2)
我认为您的问题是在删除操作期间屏幕更新导致闪烁。
SuspendLayout和ResumeLayour方法only suspend the layout of the control。它不会阻止控件重绘或调整大小。
您应该在控件上启用DoubleBuffering。
您应该创建一个从您在此处使用的WinForms控件派生的新控件类。在此类的构造函数中,使用SetStyle
方法启用双缓冲。
假设您的控件horizontalPictureScroller1
是PictureBox -
class MyControl : System.Windows.Forms.PictureBox
{
public MyControl()
{
this.SetStyle(ControlStyles.DoubleBuffer |
ControlStyles.UserPaint |
ControlStyles.AllPaintingInWmPaint,
true);
}
}