In my MDI app, I'll often need to show a form modally (Form.ShowDialog). What I have noticed is that when I close the form with Me.Close, and then open that form again, it appears that not all of the module-level variables have been cleared (i.e. there are "holdovers" from the previous time the form was open). But when I close with Me.Dispose, I do get the expected result, i.e. subsequent times the form is open, it starts "fresh" as desired. However, Me.Dispose causes an annoying flicker when the form closes. What is the "best practice" here?