类似百度、google搜索栏,输入完关键字后会弹出一个选项框,我要说的就是弹出这个框的事件,我觉得它不是textchanged事件,因为它会有一个延迟才触发,不是立即触发,请问这个事件如何自己写?
对了,我是要在winform上写类似这样的一个事件,不是webform上

解决方案 »

  1.   

    textchanged事件,延迟是因为它是加裁和比较
      

  2.   

    我们项目中之前别人写的使用textchanged事件,就是因为它加载和比较,弄的在输入多个字的时候画面一卡一卡的。
      

  3.   

    想实现自动完成,就必须明白三个属性:       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
      

  4.   

    我在想是否可以这样:利用textchange事件,当事件触发时,另开一个线程用来“计时”,当时间大于等于1s且焦点还在该textbox上时,事件触发!
      

  5.   

    真的建议四楼看清我的问题你说的跟我这个是两码事,你说的autocomplete功能,而我要的是这个事件!
      

  6.   

    KeyPress
     回复内容太短了!