在我的c# Windows窗体应用中,我有一个学生列表(Student
)。 ArrayList students = new ArrayList();
有一个文本框和列表框。
Student
称为studentId
。因此,当我在文本框中输入数字时,应用程序应过滤掉数组列表(自动完成),并在列表框中显示建议。< / p>
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);
}
}
}
}
我已经尝试过了,并没有找到我的期望的结果。请帮我解决这个问题
答案 0 :(得分:2)
这是用于ID的StartsWith 使用HashSet。学生列表或数组 即使ID是整数,您也需要使用字符串
public IEnumerable<string> Students
{
get
{
return studentsSS
.Where(x => x.StartsWith(studentID));
}
}
答案 1 :(得分:1)
将ArrayList
更改为List<Student>
,然后只使用已过滤的列表设置listbox
的数据源:
private void textBoxNameForID_TextChanged(object sender, EventArgs e)
{
listBox1.DataSource = students.Where(s => s.Id.StartsWith(textBoxNameForID.Text)).ToList();
}
将listBox
DisplayMember
设置为Student
类中的属性名称。举个例子:
listBox1.DisplayMember = "Display";
其中Display
可以是:public string Display { get { return Id + ":" + Name; } }