当前位置:编程学习 > C#/ASP.NET >>

请问Invalidate方法--重绘

public Form1()
    {
        InitializeComponent();
    }
Point point1 = new Point(20, 20);
private void Form1_Load(object sender, EventArgs e)
    {
           
    }       
private void Form1_Paint(object sender, PaintEventArgs e)
    {
         Graphics g = this.CreateGraphics();
         Rectangle rectangle = new Rectangle(point1, new Size(30, 30));
         Pen pen1 = new Pen(Color.Red);
         g.DrawEllipse(pen1, rectangle);
     }
private void button1_Click(object sender, EventArgs e)
     {
         point1 = new Point(20, 40);  
         Invalidate();      //调用Invalidate方法,实现重绘
     }


上面是一个简单的调用Invalidate方法实现重绘的代码,我想问:
上面例子是form1_paint事件,如果想实现panel1_Paint事件,该怎么做呢?如果Form1中有多个paint事件,Invalidate是调用的哪个paint事件呢? --------------------编程问答-------------------- 如果Form1中有多个paint事件,Invalidate是调用的哪个paint事件呢?

打开 form.design.cs 文件

里面有类似

this.Paint += new EventHandler(Form1_Paint);

这样的代码。

调用的就是这个里面指定的方法。

至于如何编写Panel的Paint,原理是一样的。 --------------------编程问答-------------------- 我是说,比如:
public Form1()
  {
   InitializeComponent();
  }
private void panel1_Paint(object sender, PaintEventArgs e)
        {
        }
private void button9_Click(object sender, EventArgs e)
        {
          ......
         
         Invalidate();//这里怎么不能调用panel1_Paint事件呢?
        }
如何调用panel1_Paint事件 --------------------编程问答-------------------- 等待答案啊 --------------------编程问答-------------------- panel1.Invalidate() --------------------编程问答--------------------
引用 2 楼 sdfsdf43 的回复:
我是说,比如:
public Form1()
  {
  InitializeComponent();
  }
private void panel1_Paint(object sender, PaintEventArgs e)
  {
  }
private void button9_Click(object sender, EventArgs e)
  {
  ......……

这里调用的是this.Invalidate();
也就是form的Invalidate --------------------编程问答--------------------
引用 2 楼 sdfsdf43 的回复:
我是说,比如:
public Form1()
  {
   InitializeComponent();
  }
private void panel1_Paint(object sender, PaintEventArgs e)
        {
        }
private void button9_Click(object sender, EventArgs e)
……

这里调用的是当前窗体的Invalidate。就是this.Invalidate
想调用panel的试试panel1.Invalidate() --------------------编程问答-------------------- 谁的Paint,就谁的Invalidate,panel1.Invalidate
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,