所以,我有2種形式。主要有一個TextBox
,如果我按F1
它將打開一個DataGridView
的新表格,具體取決於TextBox
上插入的值。從第二個窗體中雙擊該行後,它將再次顯示主窗體,並將TextBox
填入所選行。使用C中的TextBox驗證事件#
然後,在主窗體中,我在TextBox
上有一個驗證事件,它將能夠根據該值在主窗體DataGridView
中顯示它。
不幸的是,它不起作用,我認爲這個問題來自CauseValidation
從其他組件。我通過使用例如:dataGridView1.CauseValidation = false;
來禁用它,但仍然是相同的。
這是對TextBox
事件的代碼:
private void txtCargs_Validating(object sender, CancelEventArgs e)
{
e.Cancel = false;
try
{
SqlConnection con = new SqlConnection(cs.DBConnP);
con.Open();
string querySelect = @"SELECT RTRIM(CL.Cargs) AS 'Cargs', RTRIM(S.Abvs) AS 'Abss', RTRIM(CL.Linha) AS 'Linha', RTRIM(CL.Qtd) AS 'Quantity'
FROM CargaCab CC (NOLOCK)
INNER JOIN CargsLin CL (NOLOCK) ON CC.Cargs = CL.Cargs
INNER JOIN Stock S (NOLOCK) ON CL.Code = S.Code
INNER JOIN Marks M (NOLOCK) ON S.Marks = M.Marks
WHERE CC.Date >= GETDATE() - 120 AND CL.State NOT IN ('F', 'A') AND S.TypeEmb = 'P'
AND CC.TypeD = 'OCS' AND CL.Cargs = '" + txtCargs.Text.Trim() + "' ORDER BY CL.Carga, S.Marks DESC, S.Abvs";
cmd = new SqlCommand(querySelect);
cmd.Connection = con;
SqlDataAdapter da = new SqlDataAdapter(cmd);
DataSet ds = new DataSet();
da.Fill(ds, "CargaCab");
dataGridView1.DataSource = ds.Tables["CargaCabee"].DefaultView;
dataGridView1.Columns[0].ReadOnly = true;
dataGridView1.Columns[1].ReadOnly = true;
dataGridView1.Columns[2].ReadOnly = true;
dataGridView1.Columns[3].ReadOnly = false;
con.Close();
}
catch (Exception ex)
{
MessageBox.Show("Error\nDetalhes: " + ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
}
我該怎麼辦?
在什麼時候該代碼會失敗? –
代碼不會在斷點處運行 – RekcsGaming
您爲什麼要嘗試在「驗證」事件上執行此操作?據我所知,當你試圖將注意力放在某些控制上時,驗證就會觸發。你不能使用「TextChanged」事件嗎? –