我认为这将是一件微不足道的任务,但并不是所有的事情都那么简单。问题是用户可以通过两种方式将项目插入ComboBox
中:
首先,我有这种扩展方法:
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
个集合,但是...如果通过剪贴板插入了项目该怎么办? :)这样可以清除所有粘贴的项目吗? :)
我想念什么吗?有解决方案吗?
答案 0 :(得分:0)
修复combobox1.Items.Add()
功能。将combobox1.Items.Add(combobox.Text);
更改为combobox1.Items.Add(new ComboBoxItem(){Content=combobox1.Text});
这就是您要做的一切。