搜索checklistbox的文本框,但不记得检查的项目C#C调

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了搜索checklistbox的文本框,但不记得检查的项目C#C调相关的知识,希望对你有一定的参考价值。

当我检查了checkedListBox1对列表中的项目和使用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);
    
答案

注释掉在代码的顶部的清除()方法。这应该表明你正在清除这些值。然后通过实际需要的东西要清除,什么没有你的工作方式。

另一答案

那么,你的问题主要在于在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
  1. 或者,我们可以移动索引和检查项目结算及CheckListBox刷新逻辑到一个单独的函数为: private void refreshChkListBox() checkedListBox1.Items.Clear(); listSurowceTabela.Clear(); indexes.Clear(); //your code to append items to list goes here

后来又调用这个函数来刷新CheckListBox如果你有一个需要它。

以上是关于搜索checklistbox的文本框,但不记得检查的项目C#C调的主要内容,如果未能解决你的问题,请参考以下文章

在c#winform中怎样获取checklistbox选中的值

C#当用户控件变为活动状态时,如何自动刷新文本文件中的数据?

c#wpf 中有没有checklistbox

Flutter 自动提示文本框

自定义设计文本框

如何在数据表中的搜索框中输入值