文本框更改时如何过滤掉列表

本文关键字:过滤 列表 何过滤 文本 | 更新日期: 2023-09-27 17:54:59

在我的c#窗口窗体应用程序中,我有一个学生列表(Student(。 ArrayList students = new ArrayList();有一个文本框列表框

Student有叫做studentId的财产。因此,当我在文本框中输入数字时,应用程序应过滤掉数组列表(自动完成(并在列表框中显示建议

private void textBoxNameForID_TextChanged(object sender, EventArgs e)
{
      // MessageBox.Show("Changed: " + " Text is: " + textBoxNameForID.Text);
      if (studentsSortedList != null) 
      {     
            foreach (Student stu in students)
            {       
                 bool contains = stu.ID.ToString().Contains(textBoxNameForID.Text);
                 if (contains) 
                 {
                      MessageBox.Show("Changed: " + " Text is: " + textBoxNameForID.Text);
                 }
            }
       }
 }

我已经尝试过了,但没有找到符合我期望的结果。请帮我解决这个问题

文本框更改时如何过滤掉列表

这是

StartsWith for ID
使用 HasSet。学生HS
的列表或数组即使 ID 是整数,您也需要使用字符串

public IEnumerable<string> Students 
{
    get
    {
        return studentsSS
               .Where(x => x.StartsWith(studentID));
    }
}

ArrayList更改为 List<Student> ,然后只需使用过滤列表设置listbox的数据源:

private void textBoxNameForID_TextChanged(object sender, EventArgs e)
{
   listBox1.DataSource = students.Where(s => s.Id.StartsWith(textBoxNameForID.Text)).ToList();
}

同时使用 Student 类中的属性名称设置listBox DisplayMember。举个例子:

listBox1.DisplayMember = "Display";

其中Display可以是:public string Display { get { return Id + ":" + Name; } }