what I am getting at is something like OpenFileDialog.Show() method that returns after indefinite amount of time, only after user does something (presses Ok in this case). Well, I know that I can achieve similar things for dialog controls by subclassing from dialog, or form, or something like that. But what if I want to do it for something totally unrelated to dialogs, e.g. I want to write a method InputStringToTextbox() that will return only after the user has entered a legal string into a textbox on the form and pressed Enter.
I do have some basic exposure to the concepts of threads and C#'s BeginInvoke/EndInvoke stuff, but I don't quite understand how to apply these ideas to this specific situation.