0

C#でListViewをクリアするにはどうすればよいですか?

ListView にデータを入力する方法は次のとおりです。

int listViewCounter = 0;
for (int i = 0; i < dtXLS.Rows.Count; i++)
{
    listViewCounter++;

    ListViewItem item = new ListViewItem();
    item.Text = "First item" + listViewCounter;
    item.SubItems.Add("sadad" + listViewCounter);
    item.SubItems.Add("sadad" + listViewCounter);
    item.SubItems.Add("sadad" + listViewCounter);
    item.SubItems.Add("sadad" + listViewCounter);
    LV.Items.Add(item);

    LV.Items[listViewCounter - 1].SubItems[0].Text = listViewCounter.ToString();
    LV.Items[listViewCounter - 1].SubItems[1].Text = "sample1";
    LV.Items[listViewCounter - 1].SubItems[2].Text = "sample2";
    LV.Items[listViewCounter - 1].SubItems[3].Text = "sample3";
    LV.Items[listViewCounter - 1].SubItems[4].Text = "sample4";
}

結果は次のようになります。

1st Column    2nd Column    3rd Column    4th Column    5th Column
1             sample1       sample2       sample3       sample4

Cdeez これは私のコードの一部なので、次のことがわかります。

public void ProcessFunction(RichTextBox rtb1, RichTextBox rtb2, DataTable dtXLS, ListView LV)
{
    int matchlist_counter = 0;


    string[] wordsToRedact = new string[dtXLS.Rows.Count];


    for (int i = 0; i < dtXLS.Rows.Count; i++)
    {
        wordsToRedact_counter++;


        wordsToRedact[i] = dtXLS.Rows[i][0].ToString();
        wordsToRedact[i] = Regex.Escape(dtXLS.Rows[i][0].ToString());


        Regex test = new Regex(@"\b(" + wordsToRedact[i] + @")\b", RegexOptions.Singleline | RegexOptions.Compiled);
        MatchCollection matchlist = test.Matches(rtb1.Text);


        if (matchlist.Count > 0)
        {
            for (int j = 0; j < matchlist.Count; j++)
            {
                WordsToRedact words = new WordsToRedact(matchlist[j]);

                HighLighting HL = new HighLighting();
                HL.Highlight_Words(pdfRT, words, Color.Yellow);
                matchlist_counter++;
            }
        }



        ListViewItem item = new ListViewItem();
        item.Text = "First item" + wordsToRedact_counter;
        item.SubItems.Add("sadad" + wordsToRedact_counter);
        item.SubItems.Add("sadad" + wordsToRedact_counter);


        LV.Items.Add(item);
        LV.Items[wordsToRedact_counter - 1].SubItems[0].Text = wordsToRedact_counter.ToString();
        LV.Items[wordsToRedact_counter - 1].SubItems[1].Text = wordsToRedact[i];
        LV.Items[wordsToRedact_counter - 1].SubItems[2].Text = matchlist_counter.ToString();

        matchlist_counter = 0;
    }
}


private void analyzeButton_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();
    DataTable dtXLS = loadXLS(xls_path);
    WordsToRedactFunc(pdfRT, visfRT, dtXLS, listView1);
    MessageBox.Show("Processing done!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}

私の質問は、特定のボタンがクリックされるたびにすべてのアイテムをクリアするにはどうすればよいですか?

4

5 に答える 5

6

コードを変更してください:

ListViewItem item = new ListViewItem("First item" + listViewCounter);
item.SubItems.Add("sadad" + listViewCounter);
item.SubItems.Add("sadad" + listViewCounter);
item.SubItems.Add("sadad" + listViewCounter);
item.SubItems.Add("sadad" + listViewCounter);
LV.Items.Add(item);

そしてボタンクリックでこのように書くLV.Items.Clear();

于 2012-08-21T07:05:16.640 に答える
0

これと同じ問題に遭遇するすべての人のために、コードの何が問題なのかを理解したので、ここに投稿したいと思います。

private void analyzeButton_Click(object sender, EventArgs e)
{
    listView1.Items.Clear();
    //I just add this line 
    listviewItem_Counter = 0;  // -> this integer needs to be set as zero because evrytime the analyze button be click it will be use, so it needs to be fresh again!

    DataTable dtXLS = loadXLS(xls_path);
    WordsToRedactFunc(pdfRT, visfRT, dtXLS, listView1);
    MessageBox.Show("Processing done!", "Message", MessageBoxButtons.OK, MessageBoxIcon.Information);
}
于 2012-08-23T05:22:35.070 に答える
-1

Simply use LV.Clear() . This will remove all items and columns from the control.

于 2012-08-21T07:14:00.630 に答える