简体   繁体   中英

Clear all the items of a listview- c#

How can I clear a ListView in C#?

Here's how I populate my 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";
}

The result will be:

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

Cdeez this is the part of my code so that you can see:

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);
}

My question now is how can I clear all of the items every time a specific button click?

Change your code:

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);

And in button click write like this LV.Items.Clear();

You can use the following to clear your list:

listView1.Items.Clear();

To add some new items consider

listView1.Items.Add(new ListViewItem(new string[] { string1 , string2 , ....}));

For all who will encounter the same problem as this, I now figure out what's wrong with my code, and I just want to post it here,

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);
}

LV.Columns.Clear()将清除所有列,包括标题。

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM