当在表单1的文本框中输入圆圈的坐标并单击按钮时,我的代码在表单2上绘制一个圆圈。问题是,每次在表格1中输入坐标时,新的表格2将打开而不是旧表格更新。
第一表格上的代码
private void button1_Click(object sender, EventArgs e)
{
int r1, r2;
setValue = textBox1.Text;
setValue1 = textBox2.Text;
Int32.TryParse(setValue, out r1);
Int32.TryParse(setValue1, out r2);
Form2 f2 = new Form2();
//// f2.Show();
// f2.addcoordinate(r1,r2);
// f2.Update();
Graphics g2;
g2 = f2.CreateGraphics();
Class1 add = new Class1();
add.addcoordinate(r1,r2);
}
Class1中的代码
public void addcoordinate(int r1, int r2)
{
// MessageBox.Show(r1.ToString());
Form2 f2 = new Form2();
f2.addcoordinate(r1, r2);
f2.Show();
}
Form2上的代码
private List<Point> circleCoordinates = new List<Point>();
public Form1()
{
InitializeComponent();
}
public void addcoordinate(int r1, int r2)
{
this.circleCoordinates.Add(new Point(r1, r2));
}
protected override void OnPaint(PaintEventArgs e)
{
// linedrawing goes here
foreach (Point point in this.circleCoordinates)
{
e.Graphics.DrawEllipse(Pens.Black, new Rectangle(point, new
Size(10, 10)));
}
base.OnPaint(e);
}
请建议。
答案 0 :(得分:1)
在Form1
中,您定义f2
如下:
Form2 f2 = new Form2();
每次运行这行代码时,它都会创建一个新的对象实例。这就是您每次点击按钮时都会看到新表单的原因。
通过在类中的方法之外移动上面提到的代码行,在Form2
类和所有私有方法中定义Form1
对象。然后在方法内的代码中使用您已声明的Form2
的特定实例(在本例中为f2
)。这样,您正在处理该类的同一实例,并且每次单击Form2
时都不会创建对象button1
的新实例。