我究竟做错了什么?我应该做些什么呢? (自动完成winforms文本框)

时间:2016-09-21 17:50:25

标签: c# winforms

c#winform

我已经阅读了多篇关于如何做到这一点的文章/建议,以下是我尝试过的少数文章之一,但它没有用。事实上,当用户输入文本框时,没有任何反应。

private void OperationListForm_Load(object sender, EventArgs e)
    {
        AutoCompleteStringCollection textBoxCollection = new AutoCompleteStringCollection();

        foreach (var item in _oiList)  //_oiList is a list of objects 
        {
            textBoxCollection.Add(item.ToString());
        }

        textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
        textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
        textBox1.AutoCompleteCustomSource = textBoxCollection;
    }

我是新的,如果我需要提供更多信息,请告诉我。

2 个答案:

答案 0 :(得分:2)

您需要仔细检查的一些事项:

  • 确保textBoxCollection中包含有效的项目
  • 确保您的' OperationListForm_Load'通过设置断点并运行应用程序来调用方法
  • 确保将textBox1正确添加到表单

我测试了你的代码,它对我有用。这就是我要检查的内容:

  1. 创建了一个新的Windows窗体项目
  2. 在表单
  3. 中添加了一个文本框
  4. 将以下代码添加到Form1.cs:

    public partial class Form1 : Form
    {
      public Form1()
      {
        InitializeComponent();
        InitTextBox();
      }
    
      void InitTextBox()
      {
         AutoCompleteStringCollection textBoxCollection = new AutoCompleteStringCollection();
         textBoxCollection.Add("Bobby");
         textBoxCollection.Add("Billy");
         textBoxCollection.Add("Britney");
    
         textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
         textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
         textBox1.AutoCompleteCustomSource = textBoxCollection;
      }
    }
    
  5. 这是这个工作的截图:

    screenshot of working code

答案 1 :(得分:0)

首先,您必须创建数组并将其添加到AutoCompleteStringCollection,然后将其设置为数据源。你可以像我的样品一样,它的工作。您的问题与您尝试添加的datasource有关。它是你无法做到的对象列表。

AutoCompleteStringCollection stringCollection = new AutoCompleteStringCollection();
String[] yourArray = new[] {"Cat", "Car", "Dog", "Dinner", "War", "White"};
stringCollection.AddRange(yourArray);
textBox1.AutoCompleteCustomSource = stringCollection;
textBox1.AutoCompleteMode = AutoCompleteMode.Suggest;
textBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;

enter image description here