Reputation: 293
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?
Upvotes: 0
Views: 15449
Reputation: 482
LV.Columns.Clear() will clear all of the columns, including the headers.
Upvotes: 0
Reputation: 390
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 , ....}));
Upvotes: 1
Reputation: 293
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);
}
Upvotes: 0
Reputation: 4962
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();
Upvotes: 6
Reputation: 8187
Simply use LV.Clear()
.
This will remove all items and columns from the control.
Upvotes: -1