C#实现百度中的搜索框的下选效果

  • 格式:docx
  • 大小:13.31 KB
  • 文档页数:3

C#实现百度中的搜索框的下选效果!
using System;
usingSystem.Collections.Generic;
usingSystem.Text;
usingSystem.Windows.Forms;
usingSystem.Data.SqlClient;

namespaceNewApp
{
class AutoComplete
{
List _CompleteObjectList = new List();
Dictionary _Source = new DictionaryAutoCompleteStringCollection>();
SqlConnection conn = new SqlConnection("Data Source=.;Initial Catalog=TestDB;Integrated
Security=True");
public AutoComplete()
{
conn.Open();
SqlCommandcmd = new SqlCommand("select * from AutoComplete", conn);
SqlDataReader read = cmd.ExecuteReader();
while (read.Read())
{
string key = read["name"].ToString();
if (!_Source.ContainsKey(key))
_Source.Add(key, new AutoCompleteStringCollection());
_Source[key].Add(read["str"].ToString());
}
read.Close();
conn.Close();
}

public void AddAll(Control item)
{
for (inti = 0; i{
Control var = item.Controls[i];
if (var.GetType().Equals(typeof(TextBox)))
{
Add(var as TextBox);
}
}
}

public void Add(TextBox text)
{
_CompleteObjectList.Add(text);
text.Leave += new EventHandler(text_Leave);
text.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
text.AutoCompleteSource = AutoCompleteSource.CustomSource;
if (!_Source.ContainsKey(text.Name))
{
_Source.Add(text.Name, new AutoCompleteStringCollection());
}
text.AutoCompleteCustomSource = _Source[text.Name];
}

public void Delete(TextBox text)
{
_CompleteObjectList.Remove(text);
}

public void DeleteAll(Control item)
{
for (inti = 0; i{
Control var = item.Controls[i];
if (var.GetType().Equals(typeof(TextBox)))
{
Delete(var as TextBox);
}
}
}

public void AutoCompleteClear()
{
foreach (AutoCompleteStringCollectionvar in _Source.Values)
{ var.Clear(); }
SqlCommandcmd = new SqlCommand("Delete AutoComplete", conn);
conn.Open();
cmd.ExecuteNonQuery();
conn.Close();
}
voidtext_Leave(object sender, EventArgs e)
{
TextBox text = sender as TextBox;
if (text.Text == "")
return;
string key = text.Name;
if (!_Source.ContainsKey(key))
{
_Source.Add(key, new AutoCompleteStringCollection());
}
if (!_Source[key].Contains(text.Text))
{
SqlCommandcmd = new SqlCommand("insert into AutoComplete select '" + key.Replace("'", "''")
+ "', '" + text.Text.Replace("'", "''") + "'", conn);
conn.Open();
cmd.ExecuteNonQuery();
_Source[key].Add(text.Text);
conn.Close();
}
}
}
}