在Form1中搜索并在form2中显示结果
本文关键字:显示 结果 form2 搜索 Form1 | 更新日期: 2023-09-27 18:01:41
我有form1有searchToolStripTextBox,一个不可见的(可见=false) btnSearch, panel1(用于加载form2)和dataToolStripMenuItem(显示form2)。而form2有dgvData(datagridview)连接到mysql
问题是我想搜索某人的名字使用searchToolStripTextBox(当我按enter, btnSearch将触发)在form1和form2 dgvData将选择它
这是我的代码(in 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());
}
}
}
谢谢。
您正在创建并显示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
表单的实例,你同时显示和与同一个实例交互
单击搜索时正在创建FD的新实例。您应该在第二个方法中使用在第一个方法中创建的相同实例。您可以通过定义一个类字段来实现:
FData FD;
private void dataToolStripMenuItem_Click(object sender, EventArgs e)
{
FD = new FData();
}
并删除搜索功能中的这一行:
FData FD = new FData();
您可能还需要在对象FD
的搜索功能中执行NULL检查。