zoukankan      html  css  js  c++  java
  • winform实现类似google的搜索提示Suggest Search

    由于最近项目需要用到类似google的搜索提示,在网上找了一些资料,现将具体实现方法记录:

    主要使用的是textbox的AutoCompleteMode属性。

    注意:AutoCompleteMode有Append,None,Suggest,SuggestAppend四种属性:
    Append就是把第一个相似的项追加到你输入字符的后面
    None就是不做任何提示
    Suggest就是把相似的项用列表的方法显示在下面
    SuggestAppend就是把第一个相似的项加到你输入字符的后面并在下面用列表显示所有相似的项

    AutoCompleteCustomSource属性的使用是可选的,但必须将 AutoCompleteSource 属性设置为CustomSource后才能使用AutoCompleteCustomSource.
    AutoCompleteMode 和 AutoCompleteSource 属性必须一起使用。

    首先在窗体中有两个控件:

    textbox用于搜索;treeview用于存放需要搜索的数据源。

    定义变量List<string> lstNodes = new List<string>();用于存放树节点内容

    定义变量TreeNode preNode;用于存放树的前一节点

    在form_load事件里添加下面的代码:

    1 GetTreeViewNode(treeView1.Nodes);//遍历树的所有节点
    2             tbsearch.AutoCompleteCustomSource.AddRange(lstNodes.ToArray());
    3             tbsearch.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    4             tbsearch.AutoCompleteSource = AutoCompleteSource.CustomSource;
    遍历树的所有节点方法:
    1  void GetTreeViewNode(TreeNodeCollection node)
    2         {
    3             foreach (TreeNode TNode in node)
    4             {
    5                 lstNodes.Add(TNode.Text);
    6                 GetTreeViewNode(TNode.Nodes);
    7             }  
    8         }

    定位树节点方法:

     1  void LocateTreeViewNode(TreeNodeCollection node,string nodeText)
     2         {
     3             foreach (TreeNode TNode in node)
     4             {
     5                 if (TNode.Text == nodeText)
     6                 {
     7                     if (preNode != null)
     8                     {
     9                         preNode.BackColor = Color.Transparent;
    10                         preNode.ForeColor = Color.Black;
    11                     }
    12                     TNode.BackColor = Color.Blue;
    13                     TNode.ForeColor = Color.White;
    14                     tvSource.SelectedNode = TNode;
    15                     preNode = TNode;
    16                     return;
    17                 }
    18                 LocateTreeViewNode(TNode.Nodes,nodeText);
    19             }  
    20         }

    在textbox的KeyUp事件里面调用定义树节点方法。至此大功告成。

    结果如截图:

      

    寻找突破。。。
  • 相关阅读:
    JavaScript实现上传图片预览[js前端实现]
    Java内存Happen-Before
    《干净架构读书笔记》——业务驱动编程
    《干净架构读书笔记》——编程范式
    Scrum中的冲刺和迭代
    Spring Cloud中通过Kafka传递自定义Header
    领域驱动开发(DDD)Web开发中的典型分层
    给开发团队减减负
    业务实体和用例
    什么是好的代码-代码Review要点
  • 原文地址:https://www.cnblogs.com/iskyoole/p/2666091.html
Copyright © 2011-2022 走看看