2016-08-10 3 views
-1

searchToolStripTextBox, 보이지 않는 (visible = false) btnSearch, panel1 (form2로드 용) 및 dataToolStripMenuItem (form2 표시)이있는 form1이 있습니다. Form2를 문제가 내가 유치원 1에 searchToolStripTextBox (내가 Enter 키를 누르면, btnSearch가 트리거)를 사용하여 사람의 이름을 검색 할이며, 여기에 Form2를 dgvData이 그것을C# Mysql Form1에서 검색하고 결과를 form2에 표시

을 선택합니다

를 MySQL로 연결 dgvData (DataGridView에)를 가지고 있지만 내 코드 (form1)

private void dataToolStripMenuItem_Click(object sender, EventArgs e) 
    { 
     FData FD = new FData(); 
     FD.TopLevel = false; 
     panel1.Controls.Clear(); 
     panel1.Controls.Add(FD); 
     FD.FormBorderStyle = System.Windows.Forms.FormBorderStyle.None; 
     FD.Dock = DockStyle.Fill; 
     FD.Show(); 
     formtoolStripStatusLabel.Text = "Data"; 
    } 

private void btnSearch_Click(object sender, EventArgs e) 
    { 
     FData FD = new FData(); 

     MySqlConnection con = new MySqlConnection(MyConnectionString); 
     con.Open(); 
     try 
     { 
      MySqlCommand cmd = con.CreateCommand(); 
      cmd.CommandText = "Select * from tb_pasien where Pasien = '" + searchtoolStripTextBox.Text + "';"; 


      MySqlDataAdapter adap = new MySqlDataAdapter(cmd); 
      DataSet ds = new DataSet(); 
      adap.Fill(ds); 
      FD.dgvData.DataSource = ds.Tables[0].DefaultView; 

     } 
     catch (Exception) 
     { 
      throw; 
     } 
     finally 
     { 
      if (con.State == ConnectionState.Open) 
      { 
       con.Clone(); 
      } 
     } 
    } 

    private void searchtoolStripTextBox_KeyDown(object sender, KeyEventArgs e) 
    { 
     if (e.KeyCode == Keys.Enter) 
     { 
      btnSearch_Click(this, new EventArgs()); 
     } 
    } 
} 

이전에 감사드립니다.

답변

-1

당신은 생성하고 dataToolStripMenuItem_Click 방법의 양식을 보여주는 것 :

FData FD = new FData(); 
//... 
FD.Show(); 

는 그러나 다음 btnSearch_Click 방법 당신이 완전히 새로운 형태의, 당신 결코 쇼를 만들을하고 데이터를 전송 하나에 : 개체의 인스턴스로 만든

FData FD = new FData(); 
//... 
FD.dgvData.DataSource = ds.Tables[0].DefaultView; 

변경 다른에 영향을주지 않습니다 그 물건의 자세.

대신 폼 참조를 클래스 수준 멤버로 만듭니다. 이런 식으로 뭔가 :

FData FD = new FData(); 

private void dataToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    //... 
    FD.Show(); 
} 

private void btnSearch_Click(object sender, EventArgs e) 
{ 
    //... 
    FD.dgvData.DataSource = ds.Tables[0].DefaultView; 
} 

그 방법은 FData 형태의 하나 인스턴스가 그리고 당신은 모두 같은 인스턴스와 상호 작용 을 보여주는 것입니다.

+0

코딩처럼 작동합니다, 감사합니다. –

-1

검색을 클릭하면 FD의 새 인스턴스가 생성됩니다. 두 번째 메소드의 첫 번째 메소드에서 작성한 동일한 인스턴스를 사용해야합니다. 당신은 클래스 필드 정의하여 해당 작업을 수행 할 수 있습니다

FData FD; 
private void dataToolStripMenuItem_Click(object sender, EventArgs e) 
{ 
    FD = new FData(); 
} 

을 그리고 검색 기능에서이 줄을 제거 :

FData FD = new FData(); 

당신은 개체에 대한 검색 기능에 NULL 검사를 수행하는 것이 필요할 수 있습니다를 FD.

+0

코딩처럼 작동합니다, 감사합니다. null 확인? –

+0

@Celcius_Bitz'if (DF! = null)'. 나는 이것이 여러분의 과정에있는 것인지 실제로 알지 못하지만, 여러분이 100 % 초기화되지 않았 음을 확인하는 것이 도움이된다. – user3185569

+0

왜 정확히 투표를하지 않았습니까? – user3185569

관련 문제