繁体   English   中英

C#在窗体之间将值传递到DataGridView

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM