поиск флажок в текстовом поле, но не помню, отмеченные элементы c # c острый - PullRequest
0 голосов
/ 05 февраля 2019

Когда я проверял элементы в списке в 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 ]

0 голосов
/ 06 февраля 2019

Что ж, ваша проблема в основном заключается в этих строках в ladujZBazy():

checkedListBox1.Items.Clear();
indexes.Clear();

, куда вы звоните, чтобы очистить все содержимое checkedListBox1 и его сохраненных индексов.

Итак, при каждом вызове вашей функции вы очищаете все содержимое из checkedListBox1, а затем воссоздаете / добавляете обратно содержимое .Следовательно, он просто обновляет все элементы в checkedListBox1 (, т.е. удаляет все уже проверенные элементы в списке. ).

Итак, у нас есть 2 способа, которыми мы можем сделатьэто работает.

  1. Мы можем добавить параметр 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

Или мы можем переместить индекс и проверенный элемент Клиринг и логика обновления CheckListBox в отдельную функцию как:

private void refreshChkListBox()
{
   checkedListBox1.Items.Clear();
   listSurowceTabela.Clear();
   indexes.Clear();
   //your code to append items to list goes here
}

и позже вызватьэта функция обновляет CheckListBox, если вам это нужно.

0 голосов
/ 05 февраля 2019

Закомментируйте методы Clear () в верхней части вашего кода.Это должно продемонстрировать, что вы очищаете эти значения.Затем пройдите через то, что на самом деле нужно очистить, а что нет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...