将数据传递给 DataGridView

Passing data to DataGridViews

我的第二个表单上有文本框,下面显示的代码中有一个发送按钮。

private void button1_Click(object sender, EventArgs e)
{
    Form1 f1 = new Form1();
    f1.PassName = richTextBox1.Text;
    f1.PassLastName = richTextBox2.Text;
    f1.PassAge = comboBox1.Text;
    f1.PassGender = richTextBox3.Text;
    f1.ShowDialog();
}

和表格 1 上的 DataGridView 使用此代码

public partial class Form1 : Form
{
    private string name;
    private string lastName;
    private string age;
    private string gender;

    public string PassName
    {
        get { return name; }
        set { name = value; }
    }

    public string PassLastName
    {
        get { return lastName; }
        set { lastName = value; }
    }

    public string PassAge
    {
        get { return age; }
        set { age = value; }
    }

    public string PassGender
    {
        get { return gender; }
        set { gender = value; }
    }

    public Form1()
    {
        InitializeComponent();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        int n = dataGridView1.Rows.Add();
        dataGridView1.Rows[n].Cells[0].Value = name;
        dataGridView1.Rows[n].Cells[1].Value = lastName;
        dataGridView1.Rows[n].Cells[2].Value = age;
        dataGridView1.Rows[n].Cells[3].Value = gender;
    }

    private void mnuExit_Click(object sender, EventArgs e) //adding the quit on the top file with caution message
    {
        if (MessageBox.Show("Do you really want to Quit?", "Exit", MessageBoxButtons.OKCancel) == DialogResult.OK)
        {
            Application.Exit();
        }
    }

    private void addTask_Click(object sender, EventArgs e)
    {
        Form2 f2 = new Form2(); //show form2 so user can input data
        f2.ShowDialog();
    }

    private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
    {

    }

}`

如果我想将一组数据发送到 DataGridView,这很好,但是如果我再次添加新信息,则会打开一个新的 DataGridView 并将其存储到另一个单独的 DataGridView 那么我有两个 DataGridView 表格。我想将所有数据放在一个 DataGridView 上并继续添加行。因此,当用户单击带有 DataGridView 的第一个表单上的添加按钮时,它会打开 TextBox 表单,即表单 2,然后用户填写信息并单击发送按钮,发送信息返回到 DataGridView,但是这会打开一个新的 window 和一个新的 DataGridView。我不希望发生这种情况,我希望它继续在第一个表单上添加行。
有人可以告诉我该怎么做吗?

您可以使用 ShowDialog(this)Owner 来获取父表单的 属性.

Form1

private void Form1_Load(object sender, EventArgs e)
{
    //Move to Form1_Activated
    this.Activated += new System.EventHandler(this.Form1_Activated); //connect
}

private void Form1_Activated(object sender, EventArgs e)
{
    int n = dataGridView1.Rows.Add();
    dataGridView1.Rows[n].Cells[0].Value = name;
    dataGridView1.Rows[n].Cells[1].Value = lastName;
    dataGridView1.Rows[n].Cells[2].Value = age;
    dataGridView1.Rows[n].Cells[3].Value = gender;
}

private void addTask_Click(object sender, EventArgs e)
{
    Form2 f2 = new Form2(); //show form2 so user can input data
    f2.ShowDialog(this);//set this form as Owner
}

Form2

private void button1_Click(object sender, EventArgs e)
{
    Form1 f1 = (Form1)this.Owner;//Get the Owner form
    f1.PassName = richTextBox1.Text;
    f1.PassLastName = richTextBox2.Text;
    f1.PassAge = comboBox1.Text;
    f1.PassGender = richTextBox3.Text;
    //f1.ShowDialog();
    f1.Show();
    this.Close();
}