Сравнение элементов в selectedlistbox с элементами в массиве строк

У меня есть набор строковых массивов, которые я хочу сравнить с элементами в проверенном списке. У меня есть два проверенных списка. В первом есть три блока: Идари (административные), Туму (все) и Текник (технические). Второй проверенный список содержит все имена (как административные, так и технические). Я хочу, чтобы при проверке 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

}

1 ответ

Вот ваша проблема:

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

Скажем, вы выбрали один из элементов в chklstbx_sonuc, и затем вы проверили что-то в списке болумов, затем вы перебираете все элементы в sonuc, и если выбранный элемент в списке sonuc равен любому из элементов в idari, вы будете проверьте все предметы в sonuc.

Так что вы должны сделать это вместо этого:

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

Кроме того, я предлагаю вам поискать в WPF/XAML более простой способ обработки графического интерфейса пользователя, а в LINQ - очень мощную обработку перечислимых элементов.

Другие вопросы по тегам