日期:2014-05-18  浏览次数:20809 次

请问关于控件的重绘问题~急啊
我在使用label控件和button控件的时候,想用button空间调用label的重画,郁闷的是怎么都重画不了,不知道是怎么回事,我知道是用refresh()方法,请问能帮个忙说具体点么?

比如说:

  private void labGround_Paint(object sender, PaintEventArgs e)
  {
  int i, j;
  Brick brk=new Brick();
  Graphics gp = e.Graphics;
  SolidBrush brush = new SolidBrush(Color.Beige);
   
  //重绘全场
   
  for (i = 0; i < 10; i++)
  {
  for (j = 0; j < 20; j++)
  {
  if (brk.Ground[i, j] != 0)
  gp.FillRectangle(brush, i * 20, j * 20, 20, 20);
  }
  }
   
   
   
  }

怎么在一个button里面重绘?
麻烦了,谢谢~我用的比如简单的……
 private void btnStart_Click(object sender, EventArgs e)
  {
  int i, j;
  Brick brk = new Brick();
  for (i = 0; i < 10; i++)
  {
  for (j = 0; j < 20; j++)
  { brk.Ground[i, j] = 1; }
  }
   
  labGround.Update();
  labGround.Refresh(); <===这三种里面怎么一种都没用啊~?
  labGround.Invalidate(); 我都郁闷死了!
   
  }


各位大哥帮帮忙~~

------解决方案--------------------
调用Invalidate()及Refresh()都是可以的。
------解决方案--------------------
Refresh()就是重绘,你感觉没有重绘是因为没有重写Onpaint()事件.
C# code

public class myLabel:Label
{
protected override void OnPaint(PaintEventArgs e)
{
//画你想画的东西
                /*System.Drawing.Graphics g=e.Graphics;
                Color c=SystemColors.ControlLight;
                Pen p=new Pen(c,1);
                g.DrawLine(p,0,0,0,this.Height);*/
}