我有一组字符串数组,我想与checkedlistbox的项目进行比较。我有两个checkedlistboxes。第一个有三个盒子idari(管理员),tumu(所有)和teknik(技术人员)。第二个checkedlistbox包含所有名称(管理和技术)。我只想检查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
}
答案 0 :(得分:0)
这是你的问题:
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,以便对枚举进行一些非常强大的处理。