带有TextChanged事件的文本框不会在第二次输入中显示日期
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了带有TextChanged事件的文本框不会在第二次输入中显示日期相关的知识,希望对你有一定的参考价值。
如果我输入正确的id,我有一个Textbox
与TextChanged
事件工作得非常好。但是如果我输入一个错误的id并且MessageBox
出现在catch部分,然后我尝试输入一个正确的id,它会一直给我MessageBox
错误。
这是我的代码:
private void Pro1txt_onChange(object sender, EventArgs e)
{
try
{
cmd1 = new SqlCommand(" SELECT P_Name,P_Price,P_Quantity from Product where P_ID = '" + Pro1txt.Text + "'", cn);
cn.Open();
DataReader = cmd1.ExecuteReader();
DataReader.Read();
ProdcutName1.Text = DataReader["P_Name"].ToString();
UnitPrice1.Text = DataReader["P_Price"].ToString();
Rem_Quantity1.Text = DataReader["P_Quantity"].ToString();
if (Rem_Quantity1.Text =="0")
{
Req_Quantity1.Enabled = false;
}
}
catch
{
MessageBox.Show("Error","danget",MessageBoxButtons.OK,MessageBoxIcon.Hand);
}
}
答案
您的查询易受SQL注入攻击。你应该使用Parameters
例如:
cmd1 = new SqlCommand(" SELECT P_Name,P_Price,P_Quantity from Product where P_ID = @id", cn);
cmd1.Parameters.Clear();
cmd1.Parameters.Add("@id", SqlDbType.Int).Value = int.Parse(Pro1txt.Text);
cn.Open();
....
并尝试不在catch块中包含messagebox ..最后使用关闭数据库连接。
搜索带参数的查询以获取更多信息。
另一答案
首先要做的事:这段代码很容易被sql注入。
然后提供快速解决方案:不要在catch块中显示对话框。设置全局标志以指示您的应用程序状态。然后使用该标志显示您的消息。
以上是关于带有TextChanged事件的文本框不会在第二次输入中显示日期的主要内容,如果未能解决你的问题,请参考以下文章
如果在第二次单击时未选择日期并出现日期验证问题,则日期选择器会从日期选择器文本框中清除所选值
与 Ext.data.JsonStore 连接的 ExtJS 3 组合框不会在第二次 ++ 单击时打开