【问题标题】:AutoComplete ComboBox C#自动完成组合框 C#
【发布时间】:2011-07-31 01:25:39
【问题描述】:

我正在将庞大的数据库从 excel(大约 2000 个项目)加载到组合框。例如 CD 标题。然后我从这个 2000 中选择 1 张 CD 标题。我想在这里使用自动完成功能,但我不知道如何..

       // Loading items from Excel
       for (rCnt = 2; rCnt <= range.Rows.Count; rCnt++)
            {
                for (cCnt = 1; cCnt < 2; cCnt++)
                {
                  str = Convert.ToString(saRet[rCnt,cCnt]);
                  // Loading items to ComboBox
                  ReferenceCombo.Items.Add(str);
            }

【问题讨论】:

    标签: c# winforms excel autocomplete


    【解决方案1】:

    在您的表单上,您需要为 ComboBox 设置两个属性:

    AutoCompleteMode 应该是 Suggest、Append 或 SuggestAppend。我推荐 SuggestAppend。

    AutoCompleteSource 应该是 ListItems。

    【讨论】:

      【解决方案2】:

      这个方法帮你搞定

          private void LoadStuffNames()
          {
      
              try
              {
                      string Query = "select stuff_name from dbo.stuff";
                      string[] names = GetColumnData_FromDB(Query);
      
                      comboName.AutoCompleteMode = AutoCompleteMode.Suggest;
                      comboName.AutoCompleteSource = AutoCompleteSource.CustomSource;
                      AutoCompleteStringCollection x = new AutoCompleteStringCollection();
                      if (names != null && names.Length > 0)
                          foreach (string s in names)
                              x.Add(s);
      
                      comboName.AutoCompleteCustomSource = x;
              }
              catch (Exception ex)
              {
              }
              finally
              {
              }
      
          }
      

      并根据需要实现“GetColumnData_FromDB”

      【讨论】:

        【解决方案3】:

        除了设置 John 大约 10 分钟前引用的属性之外,这里还有一些我用来数据绑定我的组合框的代码:

        static BindingSource jp2bindingSource = new BindingSource();
        
        void jp2FillCombo() {
          ComboBox comboBox1 = new ComboBox();
          comboBox1.Items.Clear();
          object[] objs = jp2Databind(new DataSet(), "Table1", "Column1", true);
          comboBox1.Items.AddRange(objs);
        }
        
        static object[] jp2Databind(DataSet dataset, string tableName, string columnName, bool unique) {
          jp2bindingSource.DataSource = dataset;
          jp2bindingSource.DataMember = tableName;
          List<string> itemTypes = new List<string>();
          foreach (DataRow r in dataset.Tables[tableName].Rows) {
            try {
              object typ = r[columnName];
              if ((typ != null) && (typ != DBNull.Value)) {
                string strTyp = typ.ToString().Trim();
                if (!String.IsNullOrEmpty(strTyp)) {
                  if (unique) {
                    if (!itemTypes.Contains(strTyp)) {
                      itemTypes.Add(strTyp);
                    }
                  } else {
                    itemTypes.Add(strTyp);
                  }
                }
              }
            } catch (Exception err) {
              Global.LogError("Databind", err);
            }
          }
          try {
            itemTypes.Sort();
          } catch (Exception err) {
            Console.WriteLine(err.Message);
          }
          return itemTypes.ToArray();
        }
        

        【讨论】:

          猜你喜欢
          • 2021-12-07
          • 1970-01-01
          • 1970-01-01
          • 2011-09-08
          • 1970-01-01
          • 2011-10-10
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多