0

我有一组字符串数组,我想与选中列表框的项目进行比较。我有两个选中列表框。第一个有三个框 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

}

4

1 回答 1

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 来获得一些非常强大的枚举处理。

于 2014-07-23T11:45:18.740 回答