[英]C# Passing Values between Forms into DataGridView
我有3个表单,例如Form1(带有datagridview1和datagridview2),Form2和Form3。 在Form1中,我想打开Form2,编辑文本框,然后单击按钮时,它将值传递给Form1,这会将其添加到datagridview1。 在输入文本并将其传递到Form1并将其添加到datagridview2之后,Form3也会发生同样的情况。 当我单击以打开Form2,编辑数据并通过它时,它将值添加到datagrid,没问题,但是当我单击以打开Form3并执行第二个datagrid时,它将擦除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();
}
表格2:
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中相同的属性。
从您编写的代码来看,每次单击按钮并隐藏旧表单时,似乎正在创建一个新表单1。 而不是每次都创建一个表单。 您可以创建一个委托方法,窗体1可以在窗体2和窗体3中添加方法。然后,当事件被称为窗体2或窗体3时,调用委托方法。
另一种方法是使用事件args类的派生形式在窗体2和3上创建一个事件,该事件包含要添加的值。 然后让表格1实现绑定到表格2和3的事件处理程序。
像这样设置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();
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.