我们有一个基于C#Windows Forms的应用程序,其中有一个面板(用于联系人),它包含多个控件(如名称,ID,电话等)。我们添加了一个文本搜索(带有名称,ID,电话等),通过循环(for循环)通过每个控件显示任何匹配的联系人控件。
这很好用,但是如果我们有更多的联系人(比如超过100个,即总共100个面板),则需要更多时间。在这种情况下,是否有其他方法可以加快搜索速度?
修改
以下是代码
Filter(Control Pls, string search)
{
foreach (Control ctrl in Pls.Controls)
{
var Name = ctrl.Controls.Find("name", true);
if ((Name != null) && (Name.Length != 0))
{
Label n = (Label)Name[0];
contactName = n.Text;
}
var Extn = ctrl.Controls.Find("extn", true);
if ((Extn != null) && (Extn.Length != 0))
{
Label e = (Label)Extn[0];
contactExtn = e.Text;
} if (contactName != null && contactExtn != null)
{
if (contactName.Contains(search) || contactExtn.Contains(search))
{
ctrl.Show();
}
else
{
ctrl.Hide();
}
}
else
{
ctrl.Hide();
}
}
}
答案 0 :(得分:0)
首先让我描述一下我对你情况的理解。我认为
如果我的理解是正确的,那么解决方案如下:
注: 如果您没有使用任何数据库,则需要通过代码填充DataTable VContacts。