Удалить все пустые позиции (строки) только в вашем списке. Используя VS 2003 Framework 1.1 или VS 2005 Framework 2.0 или VS 2008 Framework 3.5, этот код будет работать для вас:
int i = 0;
while (listBox1.Items.Count - 1 >= i)
{
// convert listbox object to string so we can use Trim() for remove all space(whitespace char before and after the word
//then check if remain character or there is nothing at all whatever whitspace char or any space
if (Convert.ToString(listBox1.Items[i]).Trim() == string.Empty)
{
//if the line became blank after Trim() apply so the line is empty and condition is true
listBox1.Items.RemoveAt(i);
//decrement i because we remove line and the following line will take his place and his index number
i -= 1;
}
i += 1;
}
Помните, что если вы нажимаете пробел или вкладку в новой пустой строке, вы создаете символьный пробел, символ пробела и эта не пустая строка.
Чтобы понять, что я имею в виду, добавив следующие строки в список
listBox1.Items.Add(" IN ");//click tab before and after IN
listBox1.Items.Add(""); //blank line no whitespace char or any character
listBox1.Items.Add(" THE"); //click spacebar twice before THE
listBox1.Items.Add(" "); //click tab once
listBox1.Items.Add(" NAME "); //click spacebar after and before
listBox1.Items.Add(" OF "); //click tab before and spacebar after
listBox1.Items.Add(" ");//click tab twice
listBox1.Items.Add("ALLAH"); //no space after or before
Единственная строка соответствует условию String.Empty
без применения Trim()
к строке - это 2-я строка, но когда мы используем Trim()
4-ую и 7-ю строку, они будут похожи на пустую строку 2-й строки, без пробела 2-й (уже пустая или пустая строка не нуждается в изменении), 4-й, 7-й (теперь стал пустой строкой после использования обрезки) они будут удалены из списка.
Результат будет:
IN
THE
NAME
OF
ALLAH