【问题标题】:Using comboBox auto complete to suggest from list of custom class使用组合框自动完成从自定义类列表中建议
【发布时间】:2017-02-26 09:51:55
【问题描述】:

我有这样的课程:

public class Region
{
    public string Name { get; set; }
    public string Abbreviation { get; set; }
    public string Area { get; set; }
    public string Picture { get; set; }
    public string DisplayName { get; set; }
}

我有一个组合框,我在其中设置了这样的项目:

//where regions is a List<Region>
comboBox.DataSource = regions;
comboBox.DisplayMember = "DisplayName";

当用户在comboBox中手动输入文本时,我想建议一些区域Region.Name.Contains(comboBox.Text)。我该怎么做呢?

【问题讨论】:

  • 你的意思是 Region.DisplayName.Contains(comboBox.Text) 吗?根据 Name 而不是 DisplayName 进行搜索会不会让用户感到困惑

标签: c# winforms combobox autocomplete


【解决方案1】:

不完全是你要找的,但如果你想通过Region.DisplayName.Contains(comboBox.Text) 做,那么下面的代码可以完成它。

public partial class Form1 : Form
{
    List<Region> _regions = new List<Region>();
    public Form1()
    {
        //Some data to test with
        _regions.Add(new Region() { Name = "AA", DisplayName = "11" });
        _regions.Add(new Region() { Name = "AAAA", DisplayName = "111" });
        _regions.Add(new Region() { Name = "AAAAA", DisplayName = "1111" });
        _regions.Add(new Region() { Name = "BBBBBB", DisplayName = "22222" });
        _regions.Add(new Region() { Name = "CCCCC", DisplayName = "333333" });
        InitializeComponent();

        comboBox.AutoCompleteMode = System.Windows.Forms.AutoCompleteMode.SuggestAppend;
        comboBox.AutoCompleteSource = System.Windows.Forms.AutoCompleteSource.CustomSource;
        comboBox.DataSource = _regions;
        comboBox.DisplayMember = "DisplayName";

        var autoCompleteCollection = new AutoCompleteStringCollection();
        if (_regions != null && _regions.Count() > 0)
            foreach (Region region in _regions)
                autoCompleteCollection.Add(region.DisplayName);

        comboBox.AutoCompleteCustomSource = autoCompleteCollection;
    }
}

【讨论】:

  • 这似乎不是基于 DisplayName 是否“包含”comboBox.Text 而是 DisplayName 是否“以”comboBox.Text 开头的建议
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-12-16
  • 1970-01-01
  • 2011-08-24
  • 2020-05-17
  • 1970-01-01
相关资源
最近更新 更多