-
c#中实现百度搜索框的下选效果
usingSystem;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;
namespaceNewApp
{
classAutoComplete
{
List<TextBox>_CompleteObjectList=newList<TextBox>();
Dictionary<string,AutoCompleteStringCollection>_Source=newDictionary<string,AutoCompleteStringCollection>();
SqlConnectionconn=newSqlConnection("DataSource=.;InitialCatalog=TestDB;IntegratedSecurity=True");
publicAutoComplete()
{
conn.Open();
SqlCommandcmd=newSqlCommand("select*fromAutoComplete",conn);
SqlDataReaderread=cmd.ExecuteReader();
while(read.Read())
{
stringkey=read["name"].ToString();
if(!_Source.ContainsKey(key))
_Source.Add(key,newAutoCompleteStringCollection());
_Source[key].Add(read["str"].ToString());
}
read.Close();
conn.Close();
}
publicvoidAddAll(Controlitem)
{
for(inti=0;i<item.Controls.Count;i++)
{
Controlvar=item.Controls[i];
if(var.GetType().Equals(typeof(TextBox)))
{
Add(varasTextBox);
}
}
}
publicvoidAdd(TextBoxtext)
{
_CompleteObjectList.Add(text);
text.Leave+=newEventHandler(text_Leave);
text.AutoCompleteMode=AutoCompleteMode.SuggestAppend;
text.AutoCompleteSource=AutoCompleteSource.CustomSource;
if(!_Source.ContainsKey(text.Name))
{
_Source.Add(text.Name,newAutoCompleteStringCollection());
}
text.AutoCompleteCustomSource=_Source[text.Name];
}
publicvoidDelete(TextBoxtext)
{
_CompleteObjectList.Remove(text);
}
publicvoidDeleteAll(Controlitem)
{
for(inti=0;i<item.Controls.Count;i++)
{
Controlvar=item.Controls[i];
if(var.GetType().Equals(typeof(TextBox)))
{
Delete(varasTextBox);
}
}
}
publicvoidAutoCompleteClear()
{
foreach(AutoCompleteStringCollectionvarin_Source.Values)
{ var.Clear(); }
SqlCommandcmd=newSqlCommand("DeleteAutoComplete",conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
voidtext_Leave(objectsender,EventArgse)
{
TextBoxtext=senderasTextBox;
if(text.Text=="")
return;
stringkey=text.Name;
if(!_Source.ContainsKey(key))
{
_Source.Add(key,newAutoCompleteStringCollection());
}
if(!_Source[key].Contains(text.Text))
{
SqlCommandcmd=newSqlCommand("insertintoAutoCompleteselect'"+key.Replace("'","''")+"','"+text.Text.Replace("'","''")+"'",conn);
conn.Open();
cmd.ExecuteNonQuery();
_Source[key].Add(text.Text);
conn.Close();
}
}
}
}