That's by design. Your app has one UI thread, which handles updates for all forms in the app. If any part of your code starts doing something that takes a long time, no forms will be updated until it stops doing it.
You don't need to use a second form (unless you want to), but you do need to use a second thread. I'd strongly suggest you try a
BackgroundWorker[
^] which is pretty easy to set up, and contains progress reporting as well (which can get cumbersome with a straight Thread). Move all your long runnign code into that, and you UI will continue to respond normally.