Поиск флажок в текстовом поле, но не помню, отмеченные элементы C# c резко
Когда я проверял элементы в списке в selectedListBox1 и осуществлял поиск некоторых элементов с использованием textBox1, моя предыдущая проверка прошла. Когда я выполняю поиск с использованием textBox1 и проверяю какой-либо элемент в списке, а также ищу другой элемент, предыдущий проверенный тоже пропал. Любые решения? C#
void ladujZBazy(string mustContains)
{
checkedListBox1.Items.Clear();
listSurowceTabela.Clear();
indexes.Clear();
bazaproduktowDBEntities dc = new bazaproduktowDBEntities();
var c1 = from d in dc.SurowceTabela select d.NazwaSurowca;
var c2 = from d in dc.SurowceTabela select "(" + d.PartiaSurowca + ")";
var c3 = from d in dc.SurowceTabela select d.IloscSurowca;
var c4 = from d in dc.SurowceTabela select d.JednostkaSurowca;
listSurowceTabela.Add(c1.ToList());
listSurowceTabela.Add(c2.ToList());
listSurowceTabela.Add(c3.ToList());
listSurowceTabela.Add(c4.ToList());
for (int i = 0; i < listSurowceTabela[0].Count; i++)
{
string strToAdd = "";
for (int j = 0; j < listSurowceTabela.Count; j++)
{
strToAdd += " " + listSurowceTabela[j][i] + " ";
}
if (mustContains == null)
{
checkedListBox1.Items.Add(strToAdd);
indexes.Add(i);
}
else if (strToAdd.ToLower().Contains(mustContains.ToLower()))
{
checkedListBox1.Items.Add(strToAdd);
indexes.Add(i);
}
}
}
private void textBox1_TextChanged(object sender, EventArgs e)
{
ladujZBazy(textBox1.Text);
}
2 ответа
Закомментируйте методы Clear() вверху вашего кода. Это должно продемонстрировать, что вы очищаете эти значения. Затем проложите себе путь через то, что на самом деле нужно очистить, а что нет.
Ну, ваша проблема в основном заключается в этих ladujZBazy()
:
checkedListBox1.Items.Clear();
indexes.Clear();
куда вы звоните, чтобы очистить все содержимое checkedListBox1
и это хранится индексы.
Таким образом, при каждом обращении к вашей функции вы очищаете все содержимое checkedListBox1
и затем воссоздание / добавление содержимого обратно к нему. Следовательно, он просто обновляет все элементы в checkedListBox1
(т.е. удаление любых уже проверенных элементов в списке.).
Итак, у нас есть 2 способа заставить его работать.
- Мы можем добавить
Boolean
параметр кladujZBazy()
который будет определять, следует ли очиститьcheckedListBox1
или нет.
И ваш модифицированный ladujZBazy()
будет выглядеть примерно так:
void ladujZBazy(string mustContains, bool dropIndexes)
{
// the below code will only run the value is supplied as TRUE
if(dropIndexes)
{
checkedListBox1.Items.Clear();
listSurowceTabela.Clear();
indexes.Clear();
}
// your rest of the code goes here
}
А затем позвоните из вашего текстового поля TextChanged
событие как:
ladujZBazy(textBox1.Text,false);// pass TRUE to clear the checked items
Или мы можем переместить индекс и проверенный элемент Clearing и CheckListBox Refreshing Logic в отдельную функцию как:
private void refreshChkListBox() { checkedListBox1.Items.Clear(); listSurowceTabela.Clear(); indexes.Clear(); //your code to append items to list goes here }
И позже вызовите эту функцию, чтобы обновить CheckListBox
если у вас есть необходимость в этом.