【问题标题】:Remove an item based on its content根据内容删除项目
【发布时间】:2013-03-13 08:53:34
【问题描述】:

我有一个组合框,想根据 ComboBoxItem 的内容删除一个项目。我应该怎么做?像这样的:

string contentToRemove = "ItemX";
combo.Items.Remove(combo.Where(x.Content.Equals(contentToRemove)));

请注意,代码不会编译 - 我只是代表伪代码来尝试解释我想要什么。

【问题讨论】:

  • 试试这个combo.Items.Remove(combo.First(x.Content.Equals(contentToRemove)));
  • @Killo - x 会是什么?
  • 对不起,我忘记了 combo.Items.Remove(combo.Items.First(x=>x.Content.Equals(contentToRemove)));
  • 它返回这个:“错误 1 ​​'System.Windows.Controls.ItemCollection' 不包含 'First' 的定义,并且没有扩展方法 'First' 接受类型 'System.Windows 的第一个参数.Controls.ItemCollection' 可以找到(您是否缺少 using 指令或程序集引用?)"
  • 你添加了 System.Linq 命名空间吗?

标签: c# .net wpf user-interface combobox


【解决方案1】:

试试这个。

foreach (var item in combo.Items)
{
    if (item.Name == contentToRemove) // Check item.Name or something similar property.
        combo.Items.Remove(item);
}

【讨论】:

  • 我已经考虑过这种方法,但是如果可能的话,我试图用一两行来完成它。不过谢谢:)
  • 应该是combo.Items.Remove(item);
  • 谢谢,毕竟我决定采用这种方法 :)
  • @KasperCottaar 您可以在一行中执行此操作,但不建议这样做。并且可能变得复杂。您可以轻松调试。
【解决方案2】:

尝试使用这个

string contentToRemove = "Mac2";

mycombo.Items.Add("Mac1");
mycombo.Items.Add("Mac2");
mycombo.Items.Remove(contentToRemove);

您使用的表达式将返回 booltruefalse),但不会返回 combo.items.remove("String") 接受的字符串

【讨论】:

    【解决方案3】:

    使用此代码

    combo.Items.Remove({string});
    

    http://msdn.microsoft.com/en-us/library/aa983551(v=vs.71).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-10-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      相关资源
      最近更新 更多