延迟绘制WindowsFormsHost?

ast*_*ght 1 c# wpf winforms

有没有办法延迟绘制WindowsFormsHost?它托管在WPF中.

它托管一个COM对象,它是一个ESRI ArcEngine AxTocControl.在视觉上它看起来像一个目录选项卡.

我正在从目录中删除许多对象,并在单个函数中添加不同的对象.

当我删除一个对象时,TOC控件闪烁并移除和对象,然后我添加一个对象,它会闪烁并添加一个对象.由于我正在添加和删除20个对象,因此它闪烁了20次.我想延迟绘图 - 完成所有操作 - 然后恢复绘图 - 希望我只有1或2次闪烁/闪烁.

总而言之,是否有一个函数或技术(我不在乎它是多么hacky)延迟绘制WindowsFormHost - 让一些事情执行 - 然后恢复绘图?

Jon*_*Jon 5

那么,您可以WindowsFormsHost为此特定方案创建自己的子类并覆盖WndProc.从那里,只要"抑制更新"条件成立,您就可以决定默默地忽略(通过不调用base.WndProc)所有与绘图相关的消息.

您可以按照自己喜欢的方式实现的条件,例如在类中设置一个设置布尔字段的public PausePainting()/ ResumePainting()方法.

您还必须记住在ResumePainting()调用eg时重新绘制,因为您不希望您的控件永远不会更新.

最后它不会像ABC一样简单,但这个概念是合理的,所以它应该可以解决.