我想在一个窗体上绘制一个字符串   代码如下:
private void Form1_Load(object sender, EventArgs e){
Graphics g = panel1.CreateGraphics();
g.DrawString("测试字符串", new Font("宋体", 10), new SolidBrush(Color.Black), new Point(0, 0));
g.Dispose();
}
panel1是在窗体上建立的一个panel运行时没有任何显示  是什么原因?
我不想用paint事件

解决方案 »

  1.   

    为什么不想用Paint事件,不用Paint事件,其他的时候画出来了,一刷新就没了。
      

  2.   

    Paint事件就是给你提供一个绘制的时机。
      

  3.   

    不用paint事件无法绘制吗 
    定义  g = panel1.CreateGraphics(); 
    不能当成在panel上的画笔吗?  一刷新就消失了是什么意思
      

  4.   

    可以画,但是画出来的很快就会消失。
    每当窗体因为某些原因产生无效区域的时候,就是需要重绘的时候,就会产生Paint事件。
    在无效区域的所有内容都不会保留下来,如果整个窗体都是无效区域,整个窗体的内容都会消失。
      

  5.   

    把你下面的代码写一个方法如:intoPaintStr()
    private into intoPaintStr()
    {
        Graphics g = panel1.CreateGraphics(); 
        g.DrawString("测试字符串", new Font("宋体", 10), new SolidBrush(Color.Black), new Point(0, 0)); 
        g.Dispose(); 
    }在窗体的Paint事件里再次调用
    private void Form1_Paint(object sender, PaintEventArgs e)
            {
                intoPaintStr();
            }
      

  6.   

    当需要画线的时候将一个透明Panel设置到顶层, 在上面绘制就可以了。
      

  7.   

    你的画笔被刷掉了,建议通过Paintd的e.Graphics获得它的画布,然后用得到的画笔去画
      

  8.   

    即使你不做任何操作,窗体从生成到显示出来也经历了很多的过程,Resize事件至少会产生一个。
      

  9.   

    在Paint事件中重绘的时候,不要使用CreateGraphics,事件会提供相应的Graphics。