dc.Dispose();
把这一句去掉试试。

解决方案 »

  1.   

    mf 已经被disposed 所有的引用都被指空,你必须要重新实例化它才可以再引用
      

  2.   

    Application.Run(mf);的时候mf处于等待事件的状态,不会执行mf.draw();
    关闭mf后,执行mf.draw()语句;
    但此时mf已经无效,所以CLR报错。为什么不这样:using System;
    using System.Windows.Forms;
    using System.Drawing;
    using System.Collections;
    using System.ComponentModel;
    using System.Drawing.Drawing2D;
    class Class1
    {
    static void Main(string[] args)
    {
    MainForm mf=new MainForm();
    Application.Run(mf);

    //mf.draw();
    }
    } public class MainForm : System.Windows.Forms.Form
    {
    private System.ComponentModel.IContainer components=null; public MainForm()
    {
    //
    // Windows 窗体设计器支持所必需的
    //
    InitializeComponent();
    }
    protected override void Dispose( bool disposing )
    {
    if( disposing )
    {
    if(components != null)
    {
    components.Dispose();
    }
    }
    base.Dispose( disposing );
    }
    private void InitializeComponent()
    {
    this.AutoScaleBaseSize = new System.Drawing.Size(5, 13);
    this.ClientSize = new System.Drawing.Size(376, 310);
    this.Name = "MainForm";
    this.Text = "MainForm"; }

    protected override void OnPaint(PaintEventArgs pea)
    {

    Graphics dc=pea.Graphics;//this.CreateGraphics();
    //this.Show();——when run ,it have been acted.
    Pen p1=new Pen(Color.Blue, 5);
    dc.DrawEllipse(p1, 5, 5, 100, 100); dc.Dispose(); } }