1

ここに画像の説明を入力

このコードは機能しますが、最初のチェックボックスをオンにしてからもう一度オフにすると、結果が表示されます。一度だけ確認したいのですが、どなたかご意見ありませんか?ありがとう!

private void clb_grup_MouseClick(object sender, MouseEventArgs e)
        {

           Liste.Items.Clear();

            string s = "";


            foreach (var item in clb_kisiler.CheckedItems)
            {
                s = s + item.ToString() + " ";
            }
            string[] secilenler = s.Split(' ');


            if (clb_grup.GetItemChecked(0) == true)
            {
                for (int x = 0; x < clb_kisiler.Items.Count; x++)
                {
                    clb_kisiler.SetItemChecked(x, true);

                }

                for (int i = 0; i < clb_kisiler.Items.Count; i++)
                {
                    Liste.Items.Add(clb_kisiler.Items[i].ToString());
                }
            }
            else if (clb_grup.GetItemChecked(1) == true)
            {
                for (int x = 0; x < clb_idari.Items.Count; x++)
                {
                    clb_idari.SetItemChecked(x, true);
                }


                for (int i = 0; i < clb_idari.Items.Count; i++)
                {

                    Liste.Items.Add(clb_idari.Items[i].ToString());
                }
            }

            else if (clb_grup.GetItemChecked(2) == true)
            {
                for (int x = 0; x < clb_teknik.Items.Count; x++)
                {
                    clb_teknik.SetItemChecked(x, true);
                }

                for (int i = 0; i < clb_teknik.Items.Count; i++)
                {
                    Liste.Items.Add(clb_teknik.Items[i].ToString());
                }
            }



            foreach (object i in clb_kisiler.CheckedItems)
            {
                Liste.Items.Add(i.ToString());
            }


        }

新しいコード

私の友人は、コンボ ボックスの代わりに文字列配列を使用していました。彼女も私と同じ問題を抱えており、重複した項目がリスト ボックスに表示されるのを防ぐコードを書き込もうとしました。彼女は同じチェック リスト ボックスを 1 つ持っています。私のように、彼女の 2 番目のチェックされたリスト ボックスは空で、1 つのリスト ボックスはコードです。

private void chklstbx_bolum_ItemCheck(object sender, ItemCheckEventArgs e) { //最初のチェック リスト ボックスのイベント

       string[] tumu = { "Jane", "Tammy", "John", "Emily", "Susan", "Julie", "Amelia",        "Katherine" };
        string[] idari = { "Julie", "Amelia", "Katherine" };
        string[] teknik = { "Jane", "Tammy", "John", "Emily", "Susan" };

       if (chklstbx_bolum.GetItemChecked(0) == true)
       {
       //if the first box in the first check list box is checked then do this

           //this part of the code works fine but it doesnt check if there are             //duplicates of the same name in the list box


            chklstbx_sonuc.Items.Clear();

                for (int i = 0; i < 5;i++ )
                {
                    chklstbx_sonuc.Items.Add(teknik[i]);
                    chklstbx_sonuc.SetItemChecked(i, true);
                    lstbx_sonuc.Items.Add(teknik[i]);
                }
        }
         else if (chklstbx_bolum.GetItemChecked(1) == true){
       //do this if the second box in the first check box list is checked

          //Here the program checks to see if there are duplicates when adding from the second check list box but the program just freezes.

            chklstbx_sonuc.Items.Clear();


            int x=0;

            do
            {
                for (int i = 0; i < 3; i++)
                {
                    chklstbx_sonuc.Items.Add(idari[i]);
                    chklstbx_sonuc.SetItemChecked(i, true);
                    lstbx_sonuc.Items.Add(idari[i]);
                }

            } while ( x== 0);
            x++;



            for (int t = 0; t < lstbx_sonuc.Items.Count; t++)
            {
                for (int s = 0; s < chklstbx_sonuc.Items.Count; s++)
                {
                    if (chklstbx_sonuc.Items[s].ToString() != lstbx_sonuc.Items[t].ToString())

                        lstbx_sonuc.Items.Add(chklstbx_sonuc.Items[s]);

                }
            }
        }

}

では、2 番目の質問は、なぜ 2 番目の else if ステートメントが問題を引き起こし、プログラムが応答しないのかということです。また、文字列配列内のアイテムをチェックおよびチェック解除せずに、チェックされたときに直接転送する方法を知りたいですか?

4

1 に答える 1

2

クリック イベントが正しくありません。check イベントを使用してから、イベント引数でチェックボックスがチェックされているかチェックされていないかを確認する必要があります。

編集

私はあなたの他の問題を読みました。どれがチェックされたかを手動でチェックするよりも簡単な解決策があります。

転送するリストの ID を使用して、各チェックボックスに値を割り当てる必要があります。次に、チェックされた値をコードにチェックインし (おそらく送信者を介して)、FindControl(checkboxvalue)転送するリストを見つけるために使用できます。次に、最初にすべての項目を転送してから、それらを確認します。上で述べたように、checkedeventargs (または、checked イベントの eventargs パラメータが何であれ) で、チェックボックスが現在チェックされているかチェックされていないかを確認する必要もあります。

于 2014-07-18T08:02:08.633 に答える