黑马程序员技术交流社区

标题: scrollbar 的scroll事件和valuechanged事件的区别 [打印本页]

作者: 李礼彬    时间: 2013-5-19 08:54
标题: scrollbar 的scroll事件和valuechanged事件的区别
求C#scrollbar 的scroll事件和valuechanged事件的区别。比如以下运行结果,(visual studio2008)

代码:
  1. 自定义方法:public void draw(float x1, float y1, float x2, float y2, float x3, float y3, int n)
  2.         {
  3.             Pen p=new Pen(Color.Black);
  4.         g.DrawLine(p, x1, y1, x2, y2);
  5.         g.DrawLine(p,x2,y2,x3,y3);
  6.         g.DrawLine(p,x1,y1,x3,y3);
  7.         if (n > 2)
  8.         {
  9.             draw(x2, y1, (x2 - (x1 - x2) / 2), y1 + (y2 - y1) / 2, (x1 + x2) / 2, y1 + (y2 - y1) / 2,n-1);
  10.             draw(x3, y1, (x1 + x3) / 2, y1 + (y2 - y1) / 2, x3 + (x3 - x1) / 2, y1 + (y2 - y1) / 2,n-1);
  11.             draw(x1,y3,(x1+x2)/2,y3+(y3-y1)/2,(x1+x3)/2,y3+(y3-y1)/2,n-1);
  12.         }
  13.         p.Dispose();
  14.         }

  15. 事件代码:g = pictureBox1.CreateGraphics();
  16.             g.Clear(this.BackColor);
  17.             int n = hScrollBar1.Value;
  18.             label1.Text = n.ToString();
  19.             if (n == 0)
  20.             { ;}
  21.             else if (n == 1)
  22.             { g.DrawLine(Pens.Black, a, b); g.DrawLine(Pens.Black, a, c); g.DrawLine(Pens.Black, b, c); }
  23.             else
  24.             {
  25.                 g.DrawLine(Pens.Black, a, b); g.DrawLine(Pens.Black, a, c); g.DrawLine(Pens.Black, b, c);
  26.                 draw((b.X + a.X) / 2, 10, (c.X + a.X) / 2, (a.Y + c.Y) / 2, (b.X + c.X) / 2, (a.Y + c.Y) / 2, n);
  27.             }
复制代码
事件代码用scroll事件运行,每次滑动会把上一次的先画一遍,再画这一次的;可是用valuechanged事件运行就不会,何解?




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2