2016-06-01 3 views
0

У меня есть 2 формы, где форма 1 содержит текстовые поля и форма 2 содержит DataGridView. Поэтому, когда я нажимаю на поиск в форме 1, он открывает форму 2 и выбирая одну строку DataGridView, она заполняет текстовые поля в форме 1. Я выполнил этот сценарий, как, нажав кнопку поиска в форме1, я скрою форму 1, и когда я нажимаю DataGridView строку в form 2, он покажет мне форму 1 с заполненными текстовыми полями.отправить значение datagridview в другую форму

Так вот мой вопрос: как добиться, не скрывая формы 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); 
     }` 
+0

Это просто наблюдение/предложение, но есть ли причина, почему вы используете формы Windows? Почему бы не использовать WPF или UWP? Таким образом, у вас есть сила XAML и рамки привязки. –

ответ

0

Линия frmEmployeeDetails frm = new frmEmployeeDetails(); создает новая форма каждый раз, когда она выполняется. В дополнение к вашей ранее скрытой форме.

вместо этого вы должны использовать ссылку на свою оригинальную форму. вот link to an SO answer, который показывает вам, как вы можете это сделать.

Смежные вопросы