求C#scrollbar 的scroll事件和valuechanged事件的区别。比如以下运行结果,(visual studio2008) 30

代码:自定义方法:publicvoiddraw(floatx1,floaty1,floatx2,floaty2,floatx3,floaty3,intn){Penp=ne... 代码:
自定义方法:public void draw(float x1, float y1, float x2, float y2, float x3, float y3, int n)
{
Pen p=new Pen(Color.Black);
g.DrawLine(p, x1, y1, x2, y2);
g.DrawLine(p,x2,y2,x3,y3);
g.DrawLine(p,x1,y1,x3,y3);
if (n > 2)
{
draw(x2, y1, (x2 - (x1 - x2) / 2), y1 + (y2 - y1) / 2, (x1 + x2) / 2, y1 + (y2 - y1) / 2,n-1);
draw(x3, y1, (x1 + x3) / 2, y1 + (y2 - y1) / 2, x3 + (x3 - x1) / 2, y1 + (y2 - y1) / 2,n-1);
draw(x1,y3,(x1+x2)/2,y3+(y3-y1)/2,(x1+x3)/2,y3+(y3-y1)/2,n-1);
}
p.Dispose();
}

事件代码:g = pictureBox1.CreateGraphics();
g.Clear(this.BackColor);
int n = hScrollBar1.Value;
label1.Text = n.ToString();
if (n == 0)
{ ;}
else if (n == 1)
{ g.DrawLine(Pens.Black, a, b); g.DrawLine(Pens.Black, a, c); g.DrawLine(Pens.Black, b, c); }
else
{
g.DrawLine(Pens.Black, a, b); g.DrawLine(Pens.Black, a, c); g.DrawLine(Pens.Black, b, c);
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);
}

事件代码用scroll事件运行,每次滑动会把上一次的先画一遍,再画这一次的;可是用valuechanged事件运行就不会,何解?
展开
 我来答
yxs0005
2013-05-17 · TA获得超过242个赞
知道小有建树答主
回答量:226
采纳率:0%
帮助的人:91.6万
展开全部
Scroll 在通过鼠标或键盘操作移动滚动框后发生。
ValueChanged 当通过Scroll事件或以编程方式更改Value属性时发生。

你用鼠标点击滚动框不引发 ValueChanged 事件
追问
现在的问题是用scroll事件程序近乎运行两次,何解?
追答
画前用背景色天填充
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式