【问题标题】:C# Passing Values between Forms into DataGridViewC# 将表单之间的值传递到 DataGridView
【发布时间】:2014-02-10 11:56:00
【问题描述】:

我有 3 个表单,比如 Form1(带有 datagridview1 和 datagridview2)、Form2 和 Form3。在 Form1 中,我想打开 Form2,编辑文本框,当单击按钮时,它应该将值传递给 Form1,然后将其添加到 datagridview1。在输入文本并将其传递给 Form1 并添加到 datagridview2 后,Form3 也会发生同样的情况。当我单击打开 Form2,编辑数据并传递它时,它会将值添加到数据网格中,没问题,但是当我单击打开 Form3 并执行第二个数据网格时,它会删除 datagridview1 中的数据。如何让 Form1 保留以前的数据网格的值而不是删除它。目前我正在这样做:

在表格 1 中:

    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中的属性相同。

【问题讨论】:

标签: c# datagridview


【解决方案1】:

从您编写的代码看来,每次单击按钮并隐藏旧表单时,您似乎都在创建一个新表单 1。 而不是每次都创建表格一。您可以创建一个委托方法,表单 1 可以在表单 2 和表单 3 中添加方法。然后当调用事件时,表单 2 或表单 3 调用委托方法。

另一种方法是在表单 2 和 3 上创建一个事件,该事件派生自事件 args 类,其中包含要添加的值。然后让表单 1 实现绑定到表单 2 和 3 的事件处理程序。

【讨论】:

    【解决方案2】:

    这样设置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();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-05
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多