I’m building a Dialog in Winforms. It’s got the two OK and Cancel buttons that are there when you create it, which is what I want. In this dialog I also have a TextBox and a Sub (coding in VB.NET) that handles its KeyPress event. I need stuff to happen when the ‘Enter’ key is pressed.
Now, I’ve done such KeyPress handling times and times again. This situation, however, is different, because as soon as ‘Enter’ key is pressed, the dialog automatically assumes you’re pressing the ‘OK’ button, returns a result and closes. In both the Designer and the actual form when running the application, the OK button is highlight, which means is has some kind of a focus (for the lack of a better term) at all times. How can I disable this feature of a dialog? When I debug my code, pressing enter does not even get to the sub handling the KeyPress event. It simply closes the dialog and returns the result, therefore I can’t really step through the code and see what happens behind the scenes.
To restate the question, how can I disable this functionality?
Cheers! = )
This is the way it is supposed to work. You should set the form’s AcceptButton property to the OK button. It gets the fat border to indicate that it is the default button whose Click event automatically runs when the user presses Enter. If you set the button’s DialogResult property to OK then it also assigns the DialogResult property automatically so that the dialog closes.
Don’t fix it. If you want to debug it then set a break on the button’s Click event handler. If you want to prevent it from closing then either reset the button’s DialogResult property or set the form’s DialogResult property back to None. Never use the KeyPressed event.