我有3个表单,比如Form1(带有datagridview1和datagridview2),Form2和Form3。在Form1中我想打开Form2,编辑文本框,当单击一个按钮时,它应该将值传递给Form1,这将把它添加到datagridview1。输入文本并传递给Form1并添加到datagridview2后,Form3也会发生相同的情况。当我单击打开Form2,编辑数据并传递它时,它将值添加到datagrid,没问题,但是当我单击打开Form3并执行第二个数据网格时,它会删除datagridview1中的数据。如何让Form1保留以前的datagrid值而不删除它。目前我还是这样:
在Form1中:
public string value1
{
set { this.dataGridView1.Rows[0].Cells[0].Value = value; }
}
public string value2
{
set { this.dataGridView2.Rows[0].Cells[0].Value = value; }
}
private void button1_Click(object sender, EventArgs e)
{
Form2 form2 = new Form2();
form2.Show();
this.Hide();
}
private void button2_Click(object sender, EventArgs e)
{
Form3 form3 = new Form3();
form3.Show();
this.Hide();
}
Form2:
public string exampleVal = "example";
public string value
{
get { return exampleVal; }
}
private void button1_Click(object sender, EventArgs e)
{
Form1 frm = new Form1();
frm.value1 = value;
this.Hide();
frm.ShowDialog();
}
Form3与Form2中的属性相同。
答案 0 :(得分:0)
从您编写的代码中,您似乎每次单击按钮并隐藏旧窗体时都会创建新窗体1。 而不是每次都创建一个表单。您可以创建创建委托方法,表单1可以在表单2和表单3中添加方法。然后,当事件被调用时,表单2或表单3调用委托方法。
另一种方法是在表单2和3上创建一个事件,其中包含来自事件args类的派生,其中包含要添加的值。然后让表单1实现与表单2和3绑定的事件处理程序。
答案 1 :(得分:0)
像这样设置form2的构造函数
public class form2 : Form
{
Form1 mainForm;
public form2(Form1 form)
{
mainForm = form;
}
....Some other code
}
而不是创建新的form1使用mainForm
private void button1_Click(object sender, EventArgs e)
{
mainForm .value1 = value;
this.Hide();
mainForm.Show();
}