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

Вопрос:

У меня есть набор строковых массивов, которые я хочу сравнить с элементами проверочного списка. У меня есть два checklistboxes. Первый имеет три ящика idari (администраторы), tumu (все) и teknik (технические данные). Второй checklistbox содержит все имена (как администраторы, так и технические). Я хочу проверять только имена, которые находятся в массиве строк 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, вы будете проверьте все предметы в сонуке.

Поэтому вы должны сделать это вместо этого:

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

На стороне примечания, я предлагаю вам искать WPF/XAML для более простого способа обработки вашего графического интерфейса и LINQ для некоторой очень эффективной обработки перечислений.

Оцените статью
TechArks.Ru
Добавить комментарий