繁体   English   中英

如何从ComboBox获取通用类型的项目

[英]How to get items of generic type from ComboBox

我以为这将是一件微不足道的任务,但并不是那么简单。 问题是用户可以通过两种方式将项目插入ComboBox

  1. 只需输入文字
  2. 通过粘贴剪贴板中的数据(通过按钮)。

首先,我有这种扩展方法:

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

和用法:

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

不适用于手动键入的文本,因为该文本不属于Items集合-因此我得到了空列表。 我想到的一个技巧是在返回之前将此文本插入Items集合中:

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

但是,这里出现了一个问题:用户可以键入另一个文本,然后我们有两个项目,因为插入了先前的文本! 我们可以在继续操作之前清除Items集合,但是...如果项目是通过剪贴板插入的,该怎么办? :)这样可以清除所有粘贴的项目吗? :)我想念什么吗? 有解决方案吗?

修复combobox1.Items.Add()函数。 更改combobox1.Items.Add(combobox.Text); combobox1.Items.Add(new ComboBoxItem(){Content=combobox1.Text});

那就是你要做的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM