【问题标题】:c# filter listbox with textbox [closed]c#使用文本框过滤列表框
【发布时间】:2015-10-15 08:29:41
【问题描述】:

我需要一种方法来过滤列表的变量名称,我想在我在文本框中写入时尽快更新过滤器。并将游戏添加到表单列表框中。

列表的结构是:

public class Games
{
    public string ID;
    public string Name;
    public string Password;
}

这是我目前的代码:

    List<Games> games = new List<Games>();
    private void textBox10_TextChanged(object sender, EventArgs e)
    {
        d2ngList.Items.Clear();
        foreach(Games game in games)
        {
            //Filter List
            d2ngList.Items.Add(game.Name);
        }
    }

【问题讨论】:

  • 欢迎来到stackoverflow!该站点有助于解决您的代码问题。当您的结果与预期不同或出现错误时,您应该在此处发布您的代码。您还应该描述您有什么结果和预期结果和/或提供错误详情。之后,该社区将帮助您解决问题,并且(有时)会给您一些指导。这就是stackoverflow的工作原理。如您所见,您的问题没有所有适当的信息。如果您想获得帮助,请编辑您的问题和其他所需信息。
  • 你的问题是什么?
  • 重新定义你的问题

标签: c# filter listbox


【解决方案1】:

我在您的代码中没有看到任何过滤,所以可能是您的问题。您可以使用 LINQ 按名称过滤游戏:

private void textBox10_TextChanged(object sender, EventArgs e)
{
    string filter = textBox10.Text;
    d2ngList.Items.Clear();
    foreach(Games game in games.Where(g => g.Name.Contains(filter)))
    {
        d2ngList.Items.Add(game.Name);
    }
}

您还可以使用AddRange 方法优化您的代码:

    string filter = textBox10.Text;
    d2ngList.Items.Clear();
    string[] names = games
        .Where(g => g.Name.Contains(filter)).Select(g => g.Name).ToArray();
    d2ngList.Items.AddRange(names);

【讨论】:

    【解决方案2】:

    我想出了一个解决方案

        private void textBox10_TextChanged(object sender, EventArgs e)
        {
            d2ngList.Items.Clear();
            foreach(Games game in HandlerClass.Instance.Games)
            {
                if (!string.IsNullOrEmpty(textBox10.Text))
                {
                    if (game.Name.Contains(textBox10.Text))
                        d2ngList.Items.Add(game.Name);
                }
                else
                    d2ngList.Items.Add(game.Name);
            }
           // games.Where(item => filterList.Contains(item));
        }
    

    【讨论】:

    • if (!string.IsNullOrEmpty(textBox10.Text)) 没用。过滤器值不能为空。如果它是空的,那么game.Name.Contains(textBox10.Text) 将永远是真的。您出于某种原因讨厌 LINQ?
    • 好吧,我最终以任何方式使用了 LINQ
    猜你喜欢
    • 1970-01-01
    • 2019-05-25
    • 2019-07-16
    • 1970-01-01
    • 1970-01-01
    • 2021-11-08
    • 2013-07-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多