System.ComponentModel.Win32Exception:操作已成功完成

时间:2012-07-07 11:48:25

标签: c# winforms graphics

我正在创建一个带有多个面板的窗体,以使用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:操作已成功完成,同时从最小化状态最大化窗口。

1 个答案:

答案 0 :(得分:1)

BufferedGraphicsContext类是一个应该在内部实现的实现细节。对于为隐形控件创建一个错误,它没有足够的弹性。很明显,它的异常报告也没有得到足够的调试,对于那些经常不会出错的代码来说并不罕见。

显然,你这样做是为了双缓冲Panel控件,它们不是默认的。只需创建自己的控件,派生自Panel。在项目中添加一个新类并粘贴下面显示的代码。编译并将添加到工具箱顶部的新控件放到表单上,替换现有控件。

using System;
using System.Windows.Forms;

class BufferedPanel : Panel {
    public BufferedPanel() {
        this.DoubleBuffered = true;
    }
}