The .ShowDialog method is intended to show a dialog modally, i.e. it will wait for validation in that dialog before closing it and returning execution to the calling procedure. Therefore, if you want your calling form to close you'll have to close it just before you call ShowDialog on the other form.
That is, if you *must* use ShowDialog.