这个事件如何写? 类似百度、google搜索栏,输入完关键字后会弹出一个选项框,我要说的就是弹出这个框的事件,我觉得它不是textchanged事件,因为它会有一个延迟才触发,不是立即触发,请问这个事件如何自己写?对了,我是要在winform上写类似这样的一个事件,不是webform上 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 textchanged事件,延迟是因为它是加裁和比较 我们项目中之前别人写的使用textchanged事件,就是因为它加载和比较,弄的在输入多个字的时候画面一卡一卡的。 想实现自动完成,就必须明白三个属性: AutoCompleteSource属性: 设置自动完成的来源。此属性的值为AutoCompleteSource枚举值之一 AutoCompleteMode属性:设置自动完成的显示模式。此属性的值为AutoCompleteMode枚举值之一 AutoCompleteCustomSource属性:自定义完成来源。当AutoCompleteSource属性值为CustomSource时,此 属性才起做用。属性值为AutoCompleteStringCollection集合对象,可以通过AutoCompleteCustomSource属性 这个集合。 可以通过直接属性值来实现自动完成,也可以用代码实现,用代码如下:VB.NET Code: Dim arrStr(5) As String arrStr(0) = "123" arrStr(1) = "123456" arrStr(2) = "123789" arrStr(3) = "123345" arrStr(4) = "123478" arrStr(5) = "123567" Dim AutoSource As New AutoCompleteStringCollection() AutoSource.AddRange(arrStr) txtAuto.AutoCompleteMode = AutoCompleteMode.SuggestAppend txtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource txtAuto.AutoCompleteCustomSource = AutoSourceC#AutoCompleteStringCollection myCutomSource = new AutoCompleteStringCollection(); myCutomSource.AddRange(new string[]{"成都市东门","成都市北门","成都市西门","成都市南门"}); this.textBox5.AutoCompleteSource = AutoCompleteSource.CustomSource; this.textBox5.AutoCompleteMode = AutoCompleteMode.SuggestAppend; this.textBox5.AutoCompleteCustomSource = myCutomSource;在数据库中读取://这样试试,我没调试,可能会报错,自己该该就行了 AutoCompleteStringCollection cs = new AutoCompleteStringCollection();//全局变量 //窗体的load事件写 private void Form5_Load(object sender, EventArgs e) { this.txtSelect.AutoCompleteMode = AutoCompleteMode.Suggest; this.txtSelect.AutoCompleteSource = AutoCompleteSource.CustomSource; this.txtSelect.AutoCompleteCustomSource = cs; } //文本改变事件 private void txtSelect_TextChanged(object sender, EventArgs e) { cs.Clear(); DataTable tab1 = sqldataset( "select CompanyName from Customers where CompanyName like '% " + txtSelect.Text.Trim() + "% ' ").Tables[0]; for (int i = 0; i < tab1.Rows.Count; i++) { cs.Add(tab1.Rows[i][ "CompanyName "].ToString().Trim()); } } private System.Data.DataSet sqldataset(string str) { System.Data.SqlClient.SqlConnection conn = new SqlConnection( "server = .; uid = sa; pwd = ; database = NorthWind "); System.Data.SqlClient.SqlDataAdapter getdata; if (conn.State.ToString() == "Closed ") conn.Open(); getdata = new SqlDataAdapter(str.Trim(), conn); System.Data.DataSet sj = new System.Data.DataSet(); getdata.Fill(sj, "sj "); getdata.Dispose(); return sj; } 本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsgis2001/archive/2008/01/17/2047873.aspx 我在想是否可以这样:利用textchange事件,当事件触发时,另开一个线程用来“计时”,当时间大于等于1s且焦点还在该textbox上时,事件触发! 真的建议四楼看清我的问题你说的跟我这个是两码事,你说的autocomplete功能,而我要的是这个事件! KeyPress 回复内容太短了! mvc 怎么跳到静态页面的啊 SqlDataAdapter 问题,急 FATIE Inter 给的一个解决方案里 有好几个工程,他们是什么关系啊? winform新手,关于子窗口在关闭后不能再使用问题 谁知道如何在VC中或VB中用MSMQ呀。 字符串转化为二机制的问题 还是SQL数据库问题 C#线程问题!急... C#中,如何在FileStream中插入字符? c#开发的activex,为何界面上的XP风格全部丢失。而且字体巨大 编写一个自动处理脚本
arrStr(0) = "123"
arrStr(1) = "123456"
arrStr(2) = "123789"
arrStr(3) = "123345"
arrStr(4) = "123478"
arrStr(5) = "123567"
Dim AutoSource As New AutoCompleteStringCollection()
AutoSource.AddRange(arrStr) txtAuto.AutoCompleteMode = AutoCompleteMode.SuggestAppend
txtAuto.AutoCompleteSource = AutoCompleteSource.CustomSource
txtAuto.AutoCompleteCustomSource = AutoSourceC#AutoCompleteStringCollection myCutomSource = new AutoCompleteStringCollection();
myCutomSource.AddRange(new string[]{"成都市东门","成都市北门","成都市西门","成都市南门"});
this.textBox5.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.textBox5.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
this.textBox5.AutoCompleteCustomSource = myCutomSource;
在数据库中读取://这样试试,我没调试,可能会报错,自己该该就行了
AutoCompleteStringCollection cs = new AutoCompleteStringCollection();//全局变量
//窗体的load事件写
private void Form5_Load(object sender, EventArgs e)
{
this.txtSelect.AutoCompleteMode = AutoCompleteMode.Suggest;
this.txtSelect.AutoCompleteSource = AutoCompleteSource.CustomSource;
this.txtSelect.AutoCompleteCustomSource = cs;
}
//文本改变事件
private void txtSelect_TextChanged(object sender, EventArgs e)
{
cs.Clear();
DataTable tab1 = sqldataset( "select CompanyName from Customers where CompanyName like '% " + txtSelect.Text.Trim() + "% ' ").Tables[0];
for (int i = 0; i < tab1.Rows.Count; i++)
{
cs.Add(tab1.Rows[i][ "CompanyName "].ToString().Trim());
} }
private System.Data.DataSet sqldataset(string str)
{
System.Data.SqlClient.SqlConnection conn = new SqlConnection( "server = .; uid = sa; pwd = ; database = NorthWind ");
System.Data.SqlClient.SqlDataAdapter getdata;
if (conn.State.ToString() == "Closed ")
conn.Open();
getdata = new SqlDataAdapter(str.Trim(), conn);
System.Data.DataSet sj = new System.Data.DataSet();
getdata.Fill(sj, "sj ");
getdata.Dispose();
return sj;
}
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/lsgis2001/archive/2008/01/17/2047873.aspx
回复内容太短了!