代码如下:  public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            this.Paint+=new PaintEventHandler(Form1_Paint);
        }
        protected override void OnPaint(PaintEventArgs e) 
        {
            //Graphics g = e.Graphics;
            //g.DrawEllipse(new Pen(Color.Red, 50), new Rectangle(100, 200, 48, 20));
            //g.DrawString("Test !",new Font("Courier New",40f,FontStyle.Italic),new HatchBrush(HatchStyle.Cross,Color.Teal),new Point(10,16));
        }        private void Form1_Paint(object sender, PaintEventArgs e)
        {
            Graphics g = this.CreateGraphics();
            //g.DrawEllipse(new Pen(Color.Red, 50), new Rectangle(100, 200, 48, 20));
            g.DrawString("Test !",new Font("Courier New",40f,FontStyle.Italic),new HatchBrush(HatchStyle.Cross,Color.Teal),new Point(10,16));
        }
    }当写在Onpaint中时,可以实现。但是写到Form1_Paint中,貌似,该事件不执行,断点试过了。求解惑.
分不多,见谅。

解决方案 »

  1.   

    把重写方法注释掉试试看、可能是由于你 += 了paint、但是又override了paint、结果是重写的内容、因为你现在重写方法里是空的、所以什么都没有
      

  2.   

    OnPaint没有调用基类同名方法导致最终Control.OnPaint没有被调用
    事件处理器的调用是在Control.OnPaint里处理的
      

  3.   

    private void Form1_Paint(object sender, PaintEventArgs e)
            {
                Base.OnPaint(e);//这样试试
                Graphics g = this.CreateGraphics();
                //g.DrawEllipse(new Pen(Color.Red, 50), new Rectangle(100, 200, 48, 20));
                g.DrawString("Test !",new Font("Courier New",40f,FontStyle.Italic),new HatchBrush(HatchStyle.Cross,Color.Teal),new Point(10,16));
            }