我以为这将是一个微不足道的任务,但一切都不是那么简单。问题是用户可以在
ComboBox
有两种方式:
-
只需输入文本
-
首先,我有一个扩展方法:
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>();
}
但是我们有一个问题:用户可以输入另一个文本,然后我们
二
项目
继续之前收集,但是。。。如果项目是通过剪贴板插入的呢?:)这样粘贴的所有项目都将被清除?:)