文本框更改时如何过滤掉列表
本文关键字:过滤 列表 何过滤 文本 | 更新日期: 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; } }