返回首页

使用下拉列表中添加项目到ListBox

回答

评论会员:游客 时间:2012/02/06
宏观男子:只要检查它是否已在列表中。类似的方法,增加了项目列表的代码应该做的伎俩:codeprelang="cs"spanclass="code-keyword"bool/spanfound;spanclass="code-keyword"for/span(spanclass="code-keyword"int/spani=spanclass="code-digit"0/span;i<myListBox.Items.Count;++i){spanclass="code-keyword"if/span(myListBox.Items[i]==myComboBox.Text)found=spanclass="code-keyword"true/span;}spanclass="code-keyword"if/span(!found)myListBox.Items.Add(myComboBox.Text);/pre/code
gladiatron:没有循环更简单的代码:


private void comboBox1_SelectedIndexChanged(object sender, EventArgs e)

{

   //check if the item exists already and only add if it doesn't

   if (listBox1.Items.IndexOf(comboBox1.SelectedItem.ToString()) == -1)

   {

      listBox1.Items.Add(comboBox1.SelectedItem.ToString());

   }

}
评论会员:巴拉Selvanayagam 时间:2012/02/06
这里LAMDA表达式版本


 if ((listBox1.Items.Cast<string>().ToList())

             .Where(c => c == textBox1.Text).Count() == 0)

                    listBox1.Items.Add(textBox1.Text); 

</string>
评论会员:游客 时间:2012/02/06
PraveenKullu:试试这个:{C3的gladiatron}
|我知道这已经解决了,只是想分享这个解决方案,这是一劈位的队友,曾尝试使用上面的lambda表达式:

{的C4} listx是只是一个{C5的定义,而不是直接添加到ListBox中,我们添加在列表中(这将有重复),但使用不同的()的方法,我们可以检索的独特的,并添加所有在页级别,他们一气呵成的列表框。当然,我们需要清除列表框每次,所以这可能不是最有效的方式,为我们存储在一个临时名单的项目,以及,但我认为它仍然比循环更好。

欢呼声...

编辑:请不要使用此解决方案,我定时为3000元素此代码和接近尾声,它已经采取略47MS这是47倍,比使用的indexOf较慢或包含(这是最快的)
评论会员:游客 时间:2012/02/06
BillWoodruff:地段好解决方案在这里!一个地地道道的盒的想法(需要引用到LINQ):根据假设,OP的说:"我使用的是"作为新的项目源下拉列表时,他的意思:有一个ComboBox的,这是一个ListBox的新项目源。预解析ComboBox的项目和消除重复...如果有可能是重复的。{5233}1。每次用户选择从ComboBox下拉添加一个项目,该项目从ComboBox的项目codeprespanclass="code-keyword"private/spanspanclass="code-keyword"void/spancomboBox1_SelectionChangeCommitted(spanclass="code-keyword"object/spansender,EventArgse){listBox1.Items.Add(comboBox1.SelectedItem);comboBox1.Items.Remove(comboBox1.SelectedItem);}/pre/code,是的,我认为最终用户可能会发现它有点怪,ComboBox项的清单"缩小',因为它们进行选择填充的ListBox{S0的}