gpt4 book ai didi

c# - Winforms绘画是同步完成的还是异步完成的?

转载 作者:行者123 更新时间:2023-11-30 21:09:41 25 4
gpt4 key购买 nike

我有一个包含三个面板的表单。顶部面板包含列表框,中间面板包含网格,底部面板包含网格。我需要截取底部网格的屏幕截图,但有时网格中有更多行,您需要滚动查看每一行。我想在截取屏幕截图之前将底部网格设置为表单的大小,并且可以通过将两个顶部面板的 .Visible 设置为 false 来实现。我的问题是屏幕截图是在表单重新绘制自身以将网格显示为表单大小之前截取的。如何保证在执行截图之前表单已经重绘/重绘?

我正在使用来自 Capture screenshot of active window? 的 ArsenMkrt 的答案截屏。

编辑:网格是 Infragistics UltraGrid。

最佳答案

调用窗体的 Update() 方法。如果有任何待处理的油漆,那么您可以确定它们将被执行并且表格已完全绘制。这里确实是这种情况,隐藏面板需要窗体重新绘制其背景。

这只适用于您自己的表单,不适用于另一个进程拥有的窗口。使用窗体的 DrawToBitmap() 方法通常也有效(无需同步),但并非所有子控件都支持它。值得注意的是,RichTextBox 和 WebBrowser 以及许多其他 ActiveX 控件没有正确实现底层 Windows 消息。

关于c# - Winforms绘画是同步完成的还是异步完成的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8919439/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com