It looks like you're a VB-guy.
In C-based languages (like C#) there's (unlike in VB) two different operators for assigning stuff and checking stuff (I don't know the real terms). For checking if two things are equal, you use a double = (==). So what you're doing in your if statement, is assigning " " to the listbox item. This obviously doesn't return a boolean (which is what if needs). In pre-c# languages, this could cause really hard-to-find bugs, because there was no warning.
In VB, you can call a method without using parentheses. In c#, they are always needed. The compiler will think you want to store the address of the method in a delegate if you leave them out (like using AddressOf in VB.Net). When you make those two changes (and, indeed, loop backwards like Anthony Pegram said), all will work fine.