【问题标题】:combobox Autocomplete doesn't work组合框自动完成功能不起作用
【发布时间】:2014-08-15 19:47:40
【问题描述】:

我想使用 combobox 创建一个自动完成工具。

所以我只是将一些项目添加到我的组合框。并将这些项目设置为我的组合框的来源。

form_load 我这样做:

private void frmInvoice_Load(object sender, EventArgs e)      
{
    comboBox1.AutoCompleteMode=AutoCompleteMode.Append;
    comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
}

但它不起作用,当我输入一个字母时,整个单词不会出现在组合框中。为什么?

我点击这个链接:http://www.c-sharpcorner.com/UploadFile/mahesh/AutoCompletion02012006113508AM/AutoCompletion.aspx

最好的问候。

【问题讨论】:

  • 由于您已声明 CustomSource 用于自动补全,您应该提供该来源:comboBox1.AutoCompleteCustomSource = data;
  • Visit Here 相同

标签: c# winforms combobox autocomplete


【解决方案1】:

或者你可以这样做......

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
    {
    }

}

干杯..

【讨论】:

    【解决方案2】:

    由于您已声明 CustomSource 用于自动完成,您应该提供该来源:

    private void frmInvoice_Load(object sender, EventArgs e)      
    {
        comboBox1.AutoCompleteMode=AutoCompleteMode.Append;
        comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource; 
    
        AutoCompleteStringCollection data = new AutoCompleteStringCollection();
    
        // Put here the auto completions' e.g. 
        data.Add("My String 1");
        data.Add("Autocompletion 2");
        data.Add("Some stuff");
    
        comboBox1.AutoCompleteCustomSource = data;
    }
    

    【讨论】:

    • 谢谢,但有一个问题,如何防止将我的项目一一添加到我的 AutoCompleteStringCollection 中。我从数据库中获取我的数据作为字符串列表集合,我如何将我的集合设置为数据源对于 AutoCompleteStringCollection ?
    • 假设我的 'var q=myUserRepository.getall().tolist()?
    • AddRange() msdn.microsoft.com/en-us/library/… 类似data.AddRange(myUserRepository.Select(record => record.SomeStringField()).ToArray())
    【解决方案3】:

    您没有上传您的 CustomSource。

    public Form1()
    {
    InitializeComponent(); 
    this.comboBox1.AutoCompleteCustomSource.AddRange
    (new string[] {"Raj Beniwal", "Rohit Malhotra", "Ronit Singh", "Ravi Kumar",
    "Rohit Behl", "Sanjay Singh", "Shalini Singh", "Seema Malhotra", "Savi Verma",
    "Karan Kappor", "Kapil Malhotra", "Vikash Nanda", "Vikram Jain", "Amit Garg",
    "Atul Wadhwani", "Ashwani Pandey"
    }); 
    
    this.comboBox1.AutoCompleteMode = AutoCompleteMode.SuggestAppend;
    this.comboBox1.AutoCompleteSource = AutoCompleteSource.CustomSource;
    }
    

    参考来自:http://www.c-sharpcorner.com/Blogs/2050/autocomplete-combobox-in-visual-C-Sharp-2010.aspx

    【讨论】:

      【解决方案4】:

      我所做的是使用第 3 方 dll。这些是 Telerik 的。我的代码如下

      <telerik:RadComboBox x:Name="radComboBox" VerticalAlignment="Top" Visibility="Visible" AllowDrop="True"
                       ItemsSource="{Binding AvailList}" SelectedItem="{Binding SelectedComboboxItem, Mode=TwoWay}"
                       IsEditable="True" 
                       telerik:TextSearch.TextPath="DisplayName" Height="17" Margin="10,34,39,0" />
      

      这是在 xaml 中。它直接从 ItemSource 读取并执行自动补全。

      【讨论】:

        猜你喜欢
        • 2011-08-03
        • 1970-01-01
        • 2013-11-25
        • 1970-01-01
        • 2017-02-28
        • 2020-11-14
        • 2014-03-11
        • 2014-01-16
        • 2011-03-14
        相关资源
        最近更新 更多