だから、C#でのDataGridViewにダブルクリックした後、私は自分のアプリケーションが何をしたいのかを説明しようとします。 TextBox
に検索したいものを挿入し、F1
をクリックして、別のDataGridView
に表示される2番目のフォームを開きます。重複フォーム
2)第2フォームDataGridView
をダブルクリックし、その列の値がメインフォームのTextBox
に表示されます。
3)その後、TextBox
が入力され、その値に応じてメインフォームDataGridView
にその値が挿入されます。ここ
private void txtCarga_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.F1)
{
this.Hide();
frmPesquisa frmP = new frmPesquisa();
frmP.Show();
con = new SqlConnection(cs.DBConnP);
con.Open();
string querySelect = @"SELECT CL.Cargs
FROM CargsCab CC (NOLOCK)
INNER JOIN CargsLin CL (NOLOCK) ON CC.Cargs = CL.Cargs
INNER JOIN Stock S (NOLOCK) ON CL.Code = S.Code
WHERE CC.Date >= GETDATE() - 120 AND CL.State NOT IN ('F', 'A') AND S.Type = 'P'
AND CC.TypeB = 'OCS' AND CL.Cargs LIKE '%" + txtCargs.Text + "%' GROUP BY CL.Cargs ORDER BY CL.Cargs DESC";
cmd = new SqlCommand(querySelect);
cmd.Connection = con;
cmd.Parameters.Add(new SqlParameter("@Cargs", SqlDbType.NChar, 20, "CL.Cargs"));
cmd.Parameters["@Cargs"].Value = txtCargs.Text;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "CargsCab");
frmP.dataGridView1.DataSource = ds.Tables["CargsCab"].DefaultView;
txtCarga.SelectAll();
con.Close();
}
}
問題:私は校長形態の第2のフォームを呼び出すとき
private void dataGridView1_RowHeaderMouseDoubleClick(object sender, DataGridViewCellMouseEventArgs e)
{
try
{
DataGridViewRow dr = dataGridView1.SelectedRows[0];
this.Hide();
frmPrincipal frm = new frmPrincipal();
frm.Show();
frm.txtCarga.Text = dr.Cells[0].Value.ToString();
frm.txtCarga.Focus();
frm.txtCarga.SelectAll();
}
catch (Exception ex)
{
MessageBox.Show("Erro\nDetalhes: " + ex.Message, "Erro", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
これは、次のとおりです。私はこれでダブルクリックイベントを持っているDataGridView
2番目の形式では
frm.Show();
を使用すると、新しいfrmPrincipalフォームが開きますが、すでに1つあります。私がfrm.Show();
にコメントすると、コードは実行されませんが、エラーは表示されません。基本的にその値はTextBox
には表示されません。
どうすればよいですか?
に基づいて私の答えを更新しました。 frm変数を静的変数としてクラスに入れます。最初にnullの場合のみ作成してください – Mangist