代码之家  ›  专栏  ›  技术社区  ›  JohnyL

如何从ComboBox获取泛型类型的项

  •  0
  • JohnyL  · 技术社区  · 6 年前

    我以为这将是一个微不足道的任务,但一切都不是那么简单。问题是用户可以在 ComboBox 有两种方式:

    1. 只需输入文本

    首先,我有一个扩展方法:

    internal static IEnumerable<T> GetItems<T>(this ComboBox comboBox)
    {
        return comboBox.Items.Cast<T>();
    }
    

    和用法:

    var items = comboBox.GetItems<string>();
    

    这个 为手动键入的文本工作,因为此文本不属于 Items 收集-所以我得到了空列表。我想到的一个窍门就是把这段文字插入 返回前的收集:

    internal static IEnumerable<T> GetItems<T>(this ComboBox comboBox)
    {
        if (!comboBox.HasItems)
        {
            comboBox.Items.Add(comboBox.Text);
        }
        return comboBox.Items.Cast<T>();
    }
    

    但是我们有一个问题:用户可以输入另一个文本,然后我们 项目 继续之前收集,但是。。。如果项目是通过剪贴板插入的呢?:)这样粘贴的所有项目都将被清除?:)

    1 回复  |  直到 6 年前
        1
  •  0
  •   Burak Yeniçeri    6 年前

    修复 combobox1.Items.Add() 功能。改变 combobox1.Items.Add(combobox.Text); combobox1.Items.Add(new ComboBoxItem(){Content=combobox1.Text});

    这就是你要做的。