将datagridview值发送到另一个表单

时间:2016-06-01 18:42:04

标签: c# forms winforms datagridview

我有2个表单,其中表单1包含文本框,表单2包含DataGridView。因此,当我单击表单1中的搜索时,它将打开表单2并选择一个DataGridView行,它填写表单1中的文本框。我完成了这个场景,就像在form1中单击搜索按钮我隐藏表单1,当我点击表单2中的DataGridView行,它会显示带有填充文本框的表单1。

所以这是我的问题:如何在不隐藏表单1的情况下实现数据将从表单2提交。

以下是代码:

private void dataGridView1_RowHeaderMouseClick(object sender, DataGridViewCellMouseEventArgs e)
    {
        try
        {
            DataGridViewRow dr = dataGridView1.SelectedRows[0];
            this.Hide();
            frmEmployeeDetails frm = new frmEmployeeDetails();
            frm.Show();
            frm.txtStaffID.Text = dr.Cells[0].Value.ToString();
            frm.txtStaffName.Text = dr.Cells[1].Value.ToString();
            frm.txtDepartment.Text = dr.Cells[2].Value.ToString();
            frm.cmbGender.Text = dr.Cells[3].Value.ToString();
            frm.DOB.Text = dr.Cells[4].Value.ToString();
            frm.txtFatherName.Text = dr.Cells[5].Value.ToString();
            frm.txtPAddress.Text = dr.Cells[6].Value.ToString();
            frm.txtTAddress.Text = dr.Cells[7].Value.ToString();
            frm.txtPhoneNo.Text = dr.Cells[8].Value.ToString();
            frm.txtMobileNo.Text = dr.Cells[9].Value.ToString();
            frm.dtpDateOfJoining.Text = dr.Cells[10].Value.ToString();
            byte[] data = (byte[])dr.Cells[11].Value;
            MemoryStream ms = new MemoryStream(data);
            frm.pictureBox1.Image = Image.FromStream(ms);
        }
        catch (Exception ex)
        {
            MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
        }`

1 个答案:

答案 0 :(得分:0)

每次执行时,frmEmployeeDetails frm = new frmEmployeeDetails();行都会创建一个新表单。除了你之前隐藏的表格。

相反,您应该使用对原始表单的引用。这是link to an SO answer,向您展示如何执行此操作。