我的form1有searchToolStripTextBox,一个不可见(visible = false)btnSearch,panel1(用于加载form2)和dataToolStripMenuItem(显示form2)。虽然form2有连接到mysql的dgvData(datagridview)
问题是我想使用searchToolStripTextBox搜索某人的名字(当我按下回车键,btnSearch会触发)在form1和form2中,dgvData会选择它
这是我的代码(在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());
}
}
}
之前感谢。
答案 0 :(得分:-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
表单只有一个实例,并且您显示和与同一个实例进行交互。
答案 1 :(得分:-1)
点击搜索时,您正在创建FD的新实例。您应该使用在第二种方法中在第一种方法中创建的相同实例。您可以通过定义类字段来实现:
FData FD;
private void dataToolStripMenuItem_Click(object sender, EventArgs e)
{
FD = new FData();
}
并在搜索功能中删除此行:
FData FD = new FData();
您可能还需要在对象FD
的搜索功能中执行 NULL 检查。