在我的应用程序中,我不断从一个控件移动到另一个控件.我创造了没有.用户控件,但在导航过程中我的控件闪烁.更新需要1或2秒.我试着设置这个
SetStyle(ControlStyles.OptimizedDoubleBuffer, true);
or
SetStyle(ControlStyles.UserPaint, true);
SetStyle(ControlStyles.AllPaintingInWmPaint, true);
SetStyle(ControlStyles.DoubleBuffer, true);
Run Code Online (Sandbox Code Playgroud)
但它没有帮助......每个控件都有相同的背景图像和不同的控件.那么它的解决方案是什么..
谢谢.
我有一些库"自定义控件".基本上我们有自己的按钮,圆角板和一些带有一些定制油漆的组合箱.尽管OnPaint方法中存在"数学",但控件非常标准.大多数情况下,我们所做的只是绘制圆角并为背景添加渐变.我们使用GDI +来实现这一切.
这些控件都可以(根据我们的客户非常好看),但是尽管有DoubleBuffer,你可以看到一些重绘,特别是当同一个表格上有20个++按钮时(例如).在表单加载时,您会看到绘制的按钮...这很烦人.
我很确定我们的按钮不是地球上最快的东西,但我的问题是:如果双缓冲区"打开",那么不应该在后台进行所有重绘,而Windows子系统应该"立即"显示结果吗?
另一方面,如果存在将创建标签的"复杂"foreach循环,则将它们添加到面板(双缓冲)并更改其属性,如果我们在循环之前挂起面板并在循环时恢复面板布局结束,不应该所有这些控件(标签和按钮)"几乎立即"出现?这不会发生这种情况,您可以看到面板被填充.
知道为什么不发生这种情况吗?我知道很难在没有示例代码的情况下进行评估,但这也难以复制.我可以用相机制作一个视频,但相信我这个,它不是很快:)
我在处理字段更新时需要冻结(停止重绘)DataGridView.
有没有像BeginUpdate临时冻结DataGridView