• 大小: 8KB
    文件类型: .cs
    金币: 1
    下载: 0 次
    发布日期: 2021-06-07
  • 语言: C#
  • 标签: ComboBox  

资源简介

C#WinForm的ComboBox控件自定义实现自动模糊匹配查找数据的方法 与控件自带的AutoCompleteMode类似,完美实现模糊匹配,解决AutoCompleteMode只能从左向右匹配的问题

资源截图

代码片段和文件信息

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace test
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        //初始化绑定默认关键词(此数据源可以从数据库取)
        List listOnit = new List();
        //输入key之后,返回的关键词
        List listNew = new List();

        //当前输入框内的信息变量(只有在输入框里输入信息是此变量才会有值其他时候为默认空值)
        string CbxNowStr = ““;
        //输入框内的前一个历史信息变量
        string CbxOldStr = ““;

        private void Form1_Load(object sender EventArgs e)
        {
            //检测默认数组内是否有值
            if (listOnit.Count > 0)
            {
                //清空默认数组
                listOnit.Clear();
            }
            //向数组内添加数据
            listOnit.Add(“张三“);
            listOnit.Add(“张四“);
            listOnit.Add(“张五“);
            listOnit.Add(“李三“);
            listOnit.Add(“李四“);
            listOnit.Add(“李五“);
            listOnit.Add(“王三“);
            listOnit.Add(“王四“);
            listOnit.Add(“王五“);
            listOnit.Add(“三哥“);
            listOnit.Add(“四哥“);
            listOnit.Add(“五哥“);
            //以上事例为测试数据
            /*
             * 1.注意用Item.Add(obj)或者Item.AddRange(obj)方式添加
             * 2.如果用DataSource绑定,后面再进行绑定是不行的,即便是Add或者Clear也不行
             */

            //调用数据绑定的方法
            BindComboBox();
            
            //以下两行为控件默认的方法只能从左向右匹配且无法和自己定义的查询方式同时使用
            //this.comboBox7.AutoCompleteSource = AutoCompleteSource.ListItems;
            //this.comboBox7.AutoCompleteMode = AutoCompleteMode.Suggest;
        }

        /// 
        /// 动态绑定ComboBox数据的方法
        /// 

        private void BindComboBox()
        {
            //检测临时数组是否有值.初始化时临时数组为空
            if (listNew.Count > 0)
            {
                //清空COMBOBOX里的下拉框数据
                if (this.comboBox7.Items.Count > 0)
                {
                    this.comboBox7.Items.Clear();
                }
                //重新绑定新数据
                this.comboBox7.Items.AddRange(listNew.ToArray());//绑定数据
                //指定下拉框显示项长度
                this.comboBox7.MaxDropDownItems = listNew.Count;
                //清空临时数组
                this.listNew.Clear();
            }
            //默认数组内有值且当前输入框内容为空
            else if (listOnit.Count > 0 && CbxNowStr == ““)
            {
                //清空COMBOBOX里的下拉框数据
                if (this.comboBox7.Items.Count > 0)
                {
                    this.comboBox7.Items.Clear();
                }
                //绑定默认数组数据给下拉框
                this.comboBox7.Items.AddRange(listOnit.ToArray());//绑定数据
                //指定下拉框显示项长度
                this.comboBox7.MaxDropDownItems = listOnit.Count;
            }
        }
        //此方法内会用到DroppedDown方法所以必须使用T

评论

共有 条评论