我正在创建一个带有多个面板的窗体,以使用C#显示图形。
try
{
if (myBuffer != null)
myBuffer.Dispose();
myBuffer = currentContext.Allocate(this.panel1.CreateGraphics(), this.panel1.DisplayRectangle);
}
catch (Win32Exception ex)
{
MessageBox.Show(ex.ToString(), "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
这是我正在使用的代码。
我收到此错误 System.ComponentModel.Win32Exception:操作已成功完成,同时从最小化状态最大化窗口。
答案 0 :(得分:1)
BufferedGraphicsContext类是一个应该在内部实现的实现细节。对于为隐形控件创建一个错误,它没有足够的弹性。很明显,它的异常报告也没有得到足够的调试,对于那些经常不会出错的代码来说并不罕见。
显然,你这样做是为了双缓冲Panel控件,它们不是默认的。只需创建自己的控件,派生自Panel。在项目中添加一个新类并粘贴下面显示的代码。编译并将添加到工具箱顶部的新控件放到表单上,替换现有控件。
using System;
using System.Windows.Forms;
class BufferedPanel : Panel {
public BufferedPanel() {
this.DoubleBuffered = true;
}
}