我正在处理一些数据,我从WebService获取列表并在DataGridView中显示它。 DataGridView包含4列:ID,Name,Surname和Permissions。我想在一个textbox_TextChanged事件中过滤DataGridView元素。
重点是按名称搜索,然后当找到整个名称时,用户输入空格并按名称匹配姓氏。
到目前为止我所做的代码:
private void textBoxSearch_TextChanged(object sender, EventArgs e)
{
newList.Clear();
newlist2.Clear();
search = textBoxSzukaj.Text;
try
{
foreach (localhost.Person item in listPerson.ToList())
{
if (item.name.Contains(search))
{
newList.Add(item);
dataGridViewOsob.DataSource = search == "" ? listPerson : newList;
if (search.Length == item.name.Length)
{
name = search;
abc = name + " ";
searchBySurname = true;
}
else
{
searchBySurname = false;
}
}
else
{
//dataGridViewPerson.DataSource = null;
}
}
if (searchBySurname == true)
{
if (search.Length > abc.Length)
{
searchBySurname = textBoxSearch.Text;
searchBySurname = search.Remove(0, abc.Length);
foreach (localhost.Person itemm in listPerson.ToList())
{
if (itemm.name == name)
{
if (itemm.surname.Contains(searchNazwisko))
{
if (searchNazwisko.Length > 0)
{
newList.Clear();
newlist2.Add(itemm);
dataGridViewPerson.DataSource = search == "" ? listPerson : newlist2;
}
else
{
}
}
else
{
}
}
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}
问题是,当用户开始正确键入名称,然后在某些时候他错误地键入了它。在这种情况下,DataGridView将显示最后一次正确的匹配。
另一个问题是,当DataGridView中有两个人具有相同的名称时,它只会在用户输入时显示第一个人。
任何有助于修改我的代码的帮助都将非常感激。谢谢!
答案 0 :(得分:2)
你可以这样做:
long length1 = new System.IO.FileInfo("fromFile").Length;
//code for moving file here
long length2;
do{
length2 = new System.IO.FileInfo("toFile").Length;
}(while length1!=length2)