none
winform 搜索提示框实现 RRS feed

  • 问题

  • 网上很多都使用listbox ,textbox,datagridview之类的控件,但是效率不高,我想要实现,输入拼音或者汉字都可以弹出提示框,如果是拼音,就匹配汉字的拼音的字母,希望各位大侠相助,具体效果:

    2011年10月17日 12:17

答案

  • 你好!
    DataGridView 并不存在效率问题,可能是你的用法所至。
    最理想的方法是一开始加载所有的数据用 BidingSource 绑定 DataGridView 在 TextBox 的 KeyDown 或 KeyUp 事件中更改 BidingSource 的 Filter 界面会自动刷新

    知识改变命运,奋斗成就人生!
    2011年10月18日 1:25
    版主
  • 同样呢,你也可以考虑一下使用textBox的AutoCompleteSource 和 AutoCompleteMode。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.textbox.autocompletemode.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.textbox.autocompletesource(VS.80).aspx 

    这里有个示例,缺点是不能拼音识别中文,我想这个对你来说不是难事。

    string strcon = @"Data Source=.\;Initial Catalog=test;Integrated Security=SSPI;";
                string slqstr = @"select *from test01";
                SqlConnection con = new SqlConnection(strcon);
                con.Open();
                SqlDataAdapter sda = new SqlDataAdapter(slqstr, con);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                con.Close();
                AutoCompleteStringCollection col = new AutoCompleteStringCollection();
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count - 1; i++)
                    {
                        col.Add(dt.Rows[i].ItemArray[2].ToString());
                    }
                }
                this.textBox1.AutoCompleteCustomSource = col;
                this.textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
                this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    

    希望能帮助您。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月19日 3:31
    版主

全部回复

  • 你好!
    DataGridView 并不存在效率问题,可能是你的用法所至。
    最理想的方法是一开始加载所有的数据用 BidingSource 绑定 DataGridView 在 TextBox 的 KeyDown 或 KeyUp 事件中更改 BidingSource 的 Filter 界面会自动刷新

    知识改变命运,奋斗成就人生!
    2011年10月18日 1:25
    版主
  • 同样呢,你也可以考虑一下使用textBox的AutoCompleteSource 和 AutoCompleteMode。

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.textbox.autocompletemode.aspx

    http://msdn.microsoft.com/zh-cn/library/system.windows.forms.textbox.autocompletesource(VS.80).aspx 

    这里有个示例,缺点是不能拼音识别中文,我想这个对你来说不是难事。

    string strcon = @"Data Source=.\;Initial Catalog=test;Integrated Security=SSPI;";
                string slqstr = @"select *from test01";
                SqlConnection con = new SqlConnection(strcon);
                con.Open();
                SqlDataAdapter sda = new SqlDataAdapter(slqstr, con);
                DataTable dt = new DataTable();
                sda.Fill(dt);
                con.Close();
                AutoCompleteStringCollection col = new AutoCompleteStringCollection();
                if (dt.Rows.Count > 0)
                {
                    for (int i = 0; i < dt.Rows.Count - 1; i++)
                    {
                        col.Add(dt.Rows[i].ItemArray[2].ToString());
                    }
                }
                this.textBox1.AutoCompleteCustomSource = col;
                this.textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
                this.textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    

    希望能帮助您。


    Best Regards,
    Rocky Yue[MSFT]
    MSDN Community Support | Feedback to us
    Get or Request Code Sample from Microsoft
    Please remember to mark the replies as answers if they help and unmark them if they provide no help.

    2011年10月19日 3:31
    版主