你的绘图代码一定只执行了一次,区域无效后系统进行自动paint,并没有执行到你的绘图代码,
只要你在PictureBox.OnPaint方法中写你的代码就可以了,(需override),同是要base.OnPaint
也可以在Paint事件中写,比较方便

解决方案 »

  1.   

    可是在Paint事件中写的画  一启动应用程序它就画了。
      

  2.   

    private void button4_Click(object sender, System.EventArgs e)
    {
    draw = new Thread(new ThreadStart(DrawCityMap)); draw.Start();
    } private void DrawCityMap()
    {
    int x , y ; ReadData(); drawer = pictureBox1.CreateGraphics(); for(int i=0;i<143;i++)
    {
    x = city[i,0]/10;
    y = city[i,1]/10; drawer.DrawPie(Pens.Blue,x-2,y-2,4,4,0,360);

    Thread.Sleep(10);
    }
    label10.Text = "Finish drawing city map !";
    }我是通过线程来画图的  这样应该怎么写呢?
      

  3.   

    在OnPaint里加一个变量确定是否执行自己的绘图代码,如:
     if(shouldPaint)
    {
     DrawCityMap();
    }
    base.OnPaint();