Работа с приложением, которое ищет элементы в ListView. Я добавил логику бит логики для этого, чтобы выглядеть лучше. Сначала я добавил логику в List View Columns
- размер столбца соответствует содержимому. Затем поиск по ID - который работает. Моя проблема и вопрос в том, связаны ли эти два события друг от друга? значит, в то время как я пытаюсь выполнить поиск, он попадает в инфинитивную петлю с изменением размера и делает «крушение». Мой код, который зависит от того, что есть:Изменяет ли размер событие с поисковым событием независимо? ListView + TextBox C#
// Изменение размера
void DeviceListView_Resize(object sender, EventArgs e)
{
controller.ResizeColumns((ListView)sender);
}
public void ResizeColumns(ListView lv)
{
foreach (ColumnHeader column in lv.Columns)
{
column.Width = -2;
}
}
// Поиск
void SearchBox_TextChanged(object sender, EventArgs e)
{
controller.Search();
}
public void Search()
{
myListView.Items.Clear();
myListView.Items.AddRange(myList.Where(i => string.IsNullOrEmpty(searchBox.Text) || searchBox.Text.Contains("Search") || i.esn.Contains(searchBox.Text))
.Select(c => new ListViewItem (
new string[] {c.ID, c.Name, (...), c.Smth}
)).ToArray());
}
// Поиск Box держатель место
void SearchBox_TextChanged(object sender, EventArgs e)
{
controller.Search();
}
void TextGotFocus(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if(tb.Text == "Search...")
{
tb.Text = "";
tb.ForeColor = Color.Black;
}
}
void TextLostFocus(object sender, EventArgs e)
{
TextBox tb = (TextBox)sender;
if(tb.Text == "")
{
tb.Text = "Search...";
tb.ForeColor = Color.LightGray;
}
}
Все приложение уже есть много строк кода, выложили только это. КПП. Мои подозрения находятся в методе Search
в строке, которая содержит: myListView.Items.Clear();
Если я не очищаю его, он ничего не сделает, но у Search также не будет использования. Спасибо заранее!