比较复选列表框中的项与字符串数组中的项

本文关键字:字符串 数组 比较 列表 | 更新日期: 2023-09-27 18:14:16

我有一组字符串数组,我想将它们与checklistbox中的项进行比较。我有两个复选框。第一个有三个方框idari(管理),tumu(所有)和teknik(技术)。第二个复选框包含所有的名称(包括管理员和技术人员)。我希望在检查idari时只检查idari字符串数组中的名称。teknik和tumu也一样。这是我的代码,但它只是在我检查idari时继续检查所有的项目。谁能给我一个想法是什么错了我的代码?我也有问题调用函数chklstbox_bolum方法。

    string[] tumu = { "Jane", "Tom", "Danny", "John", "Jacyln", "Lily", "Lale" };
    string[] idari = { "Jane", "Tom", "Danny" };
    string[] teknik = {  "John", "Jacyln", "Lily", "Lale"};
    private void idari_secimi()
    { //function 

        if (chklstbx_bolum.GetItemChecked(1) == false)//if the idari check box has been checked in the checked list box
        {

                for (int i = 0; i < chklstbx_sonuc.Items.Count; i++){
                    for (int j = 0; j < idari.Length; j++)
                    {
                        if (chklstbx_sonuc.SelectedItem.ToString()==idari[j])
                        {
                            chklstbx_sonuc.SetItemChecked(i, true);
                        }
                        else { }
                    }
                    }
        }
        else if (chklstbx_bolum.GetItemChecked(1) == true)
        {//unchecks all the items in the second checked list box when unchecking idari in the first checked list box.
            for (int i = 0; i < chklstbx_sonuc.Items.Count; i++)
            {
                chklstbx_sonuc.SetItemChecked(i, false);
            }
        }
    }

    private void chklstbx_bolum_ItemCheck(object sender, ItemCheckEventArgs e)
    {


        if (chklstbx_bolum.GetItemChecked(2) == false)
            tumu_secimi();
          //if the tumu box is checked call this function
        else if (chklstbx_bolum.GetItemChecked(1) == false)
            idari_secimi();
          //if the idari box is checked call this function
        else if (chklstbx_bolum.GetItemChecked(0) == false)
            teknik_secimi();
      //if the teknik box is checked call this function

}

比较复选列表框中的项与字符串数组中的项

你的问题是:

if (chklstbx_sonuc.SelectedItem.ToString()==idari[j])

假设你选择了chklstbx_sonuc中的一个项目,然后检查bolum列表中的一些内容,然后循环遍历sonuc中的所有项目,如果sonuc列表中选中的项目等于idari中的任何一个,你将检查sonuc中的所有项目。

所以你应该这样做:

if(chklstbx_bolum.SelectedItem.ToString()==idari[j])

顺便说一句,我建议您查看WPF/XAML以获得处理GUI的更简单方法,以及LINQ,以获得一些非常强大的枚举处理。