使用foreach的原因就是,因为我们是用数组来保存的每一次画的线,我们需要循环数组,把之前画的所有线都画上去,所以用了foreach,当然你用for循环也是可以的
你的问题就正好出在foreach里面那句
foreach (Form1 line in lines)
{
g.DrawLine(Pens.Black, line.epoint, line.spoint);
//要改成这样才行
}
因为从数组lines里面取出来的是Form1对象,对象的引用是line,而起始和结束的点,都是在每个Form1对象里面保存的,所以要从引用line里面取,你直接写变量,就相当于取当前这个对象的变量,当前对象的变量这时还没有赋值,在label5_MouseUp事件里面才赋值,所以直接取变量,就等于什么都没画。
如果把foreach改为for的话
for (int i = 0; i < lines.Count; i++)
{
Form1 line = lines[i];
g.DrawLine(Pens.Black, line.epoint, line.spoint);
}
这样写你就能明白了。
要改控件名,直接在设计界面选中控件,在属性窗口里面改Name就可以了,至于代码里面你可以用查找替换啊,虽然控件名改了,但事件还是关联的原radiobutton1的事件,也就是事件的那个方法名不需要改,如果要改,最好的方式就是在属性窗口的事件里面删掉重新创建