textBox输入逐渐变得很慢的原因????

sowinwork 2015-07-07 04:13:36
现象:在EXTBOX中输入关键字,可以在列表(datagridview)出现资料,但输入十几次后,输入开始变得很慢。要重启软件,速度才变得正常,但输入10几次后,又变得很慢了。这是什么呢?请指点,,谢谢。。
是没释放内存??,没关闭对象??

c# 相关代码
private void textBox8_TextChanged(object sender, EventArgs e)//产品检索
{
try
{
string s = this.textBox8.Text.ToString();
string sqlstr = "materiel_smalluser_select_forpart '" + textBox8.Text + "'";
this.materielshow.DataSource = SQLclass.getds(sqlstr, "tba").Tables[0];
this.materielshow.DefaultCellStyle.ForeColor = Color.Black;
}
catch (Exception ex)
{
MessageBox.Show(ex.ToString(), "提示");
}
}

public DataSet getds(string strsql, string tableName)
{
getcon();
SqlDataAdapter sdr = new SqlDataAdapter(strsql, My_con);
DataSet ds = new DataSet();
sdr.Fill(ds, tableName);
con_close();
return ds;
}

public static SqlConnection getcon()
{
My_con = new SqlConnection(strcon);
My_con.Open();
return My_con;
}

public void con_close()
{
if (My_con.State == ConnectionState.Open)
{
My_con.Close();
My_con.Dispose();
}
}




...全文
416 14 打赏 收藏 转发到动态 举报
写回复
用AI写文章
14 条回复
切换为时间正序
请发表友善的回复…
发表回复
kxyzjm62 2015-07-08
  • 打赏
  • 举报
回复
在你输入完毕后用 private void textBox1_Leave(object sender, EventArgs e) { } private void Ente(object sender, PreviewKeyDownEventArgs e) { } 运行你private void textBox8_TextChanged(object sender, EventArgs e)//产品检索 的代码
sowinwork 2015-07-07
  • 打赏
  • 举报
回复
[quote=引用 3 楼 starfd 的回复:] 代码写的看起来貌似没啥问题…… 虽然写的不咋的,把你查数据库的代码改成下面的试试呢,不要用你那个static [code=csharp]public DataSet ExecuteDataSet(string strsql, string tableName) { using(var con = new SqlConnection(strcon)) { con.Open(); SqlDataAdapter sdr = new SqlDataAdapter(strsql, con); DataSet ds = new DataSet(); sdr.Fill(ds, tableName); } return ds; } 试试
正宗熊猫哥 2015-07-07
  • 打赏
  • 举报
回复
跟控件没关系,很大的可能性是你的机子运行多次后性能跟不上,因为数据库、程序都在占资源
Imcx 2015-07-07
  • 打赏
  • 举报
回复
不要dispose,只close看看 其实下面三个方法可以合成一个吧
sowinwork 2015-07-07
  • 打赏
  • 举报
回复
引用 9 楼 sowinwork 的回复:
[quote=引用 7 楼 dongxinxi 的回复:] 一般是输入完成时校验,然后传递参数取数据 你是边输入边取数据,输一个取一次,不慢才怪
就是要这种效果啊,有没有办法解决?很多软件都是这效果。[/quote] 现在是前期不慢,检索多次后才变慢的,一定是那里有问题,才会越来越慢。
sowinwork 2015-07-07
  • 打赏
  • 举报
回复
引用 7 楼 dongxinxi 的回复:
一般是输入完成时校验,然后传递参数取数据 你是边输入边取数据,输一个取一次,不慢才怪
就是要这种效果啊,有没有办法解决?很多软件都是这效果。
sowinwork 2015-07-07
  • 打赏
  • 举报
回复
引用 4 楼 sp1234 的回复:
“输入开始变得很慢”是什么意思?你这里只有输入之后焦点移开时的事件处理代码,也没有“输入时”的事件处理代码啊?!
“输入开始变得很慢”是什么意思? 意思是,在输入框里输入文字,一开始一输入,马上就在列表中出现资料,但一段时间后,输入文字后,要等一段时间才出现。 象卡机一样,一顿一顿的。
  • 打赏
  • 举报
回复
一般是输入完成时校验,然后传递参数取数据 你是边输入边取数据,输一个取一次,不慢才怪
  • 打赏
  • 举报
回复
你在textBox8_TextChanged中动态获取数据并绑定?你确定这是你要的?断点调试一下吧 this.materielshow.DataSource = SQLclass.getds(sqlstr, "tba").Tables[0];
Anymore 2015-07-07
  • 打赏
  • 举报
回复
_TextChanged,我理解是每次输入都触发了查询,类似百度的预测搜索。
  • 打赏
  • 举报
回复
代码写的看起来貌似没啥问题…… 虽然写的不咋的,把你查数据库的代码改成下面的试试呢,不要用你那个static
public DataSet ExecuteDataSet(string strsql, string tableName)
            {
                using(var con = new SqlConnection(strcon))
{
con.Open();
                SqlDataAdapter sdr = new SqlDataAdapter(strsql, con);
                DataSet ds = new DataSet();
                sdr.Fill(ds, tableName);
                }
                return ds;
            } 
  • 打赏
  • 举报
回复
“输入开始变得很慢”是什么意思?你这里只有输入之后焦点移开时的事件处理代码,也没有“输入时”的事件处理代码啊?!
sowinwork 2015-07-07
  • 打赏
  • 举报
回复
兄弟,那句不会影响速度吧
Anymore 2015-07-07
  • 打赏
  • 举报
回复
string s = this.textBox8.Text.ToString();
干嘛用了

110,538

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧