0

ListViewの項目をチェックできるアプリケーションを作成しようとしていますが、すべて正常に機能しますが、項目がチェックされている間にListViewに項目を追加すると、ListViewがリロードされるため、すべてのチェックが外されます。これを回避する方法はありますか?それで、新しいアイテムを追加しても、すべてのアイテムがチェックされたままになりますか?これは私の現在のコードです。

            TextReader reader = new StringReader(richTextBox1.Text);
            string[] strItems = null;
            foreach (ListViewItem items in listView1.Items)
            {
                items.Remove();
            }
            while (reader.Peek() != -1)
            {
                ListViewItem item = new ListViewItem();
                strItems = reader.ReadLine().Split("-".ToCharArray());
                item.Text = strItems[0].ToString();
                item.SubItems.Add(strItems[1].ToString());
                item.SubItems.Add(strItems[2].ToString());
                item.SubItems.Add(strItems[3].ToString());
                item.SubItems.Add(strItems[4].ToString());
                listView1.Items.Add(item);
            }
4

1 に答える 1

0

あなたはそのようなことをすることができます(そしてより良いタグ/存在ロジックを見つけることによってそれを少し改善します):

        TextReader reader = new StringReader(richTextBox1.Text);
        string[] strItems = null;
        while (reader.Peek() != -1)
        {
            string nextRow = reader.ReadLine();
            if (!listView1.Items.ContainsKey(nextRow.GetHashCode().ToString()))
            {
               ListViewItem item = new ListViewItem();
               item.Name = nextRow.GetHashCode().ToString();
               strItems = nextRow .Split("-".ToCharArray());
               item.Text = strItems[0].ToString();
               item.SubItems.Add(strItems[1].ToString());
               item.SubItems.Add(strItems[2].ToString());
               item.SubItems.Add(strItems[3].ToString());
               item.SubItems.Add(strItems[4].ToString());
               listView1.Items.Add(item);
            }
        }

それに関する唯一の問題は、新しい読み取り文字列に含まれないアイテムを削除しようとしている場合ですが、それを解決することもできます(必要な場合は教えてください。追加します)

于 2012-06-06T17:19:01.330 に答える