I have a WinForm application with several input controls on a form. In the validation event handler (either Validating
or Validated
), I need to determine what control to activate next, based on the validated value.
In Microsoft's documentation of the Validating event, it states:
Caution
Do not attempt to set focus from within the Enter, GotFocus, Leave, LostFocus, Validating, or Validated event handlers. Doing so can cause your application or the operating system to stop responding. For more information, see the WM_KILLFOCUS topic in the "Keyboard Input Reference" section, and the "Message Deadlocks" section of the "About Messages and Message Queues" topic in the MSDN library at http: // msdn.microsoft.com/library.
There is an ActiveControl
property for a Form class that allows setting the control that is to become active, and no restrictions are mentioned. I have not found any other solution after several hours of web searches.
Is setting the ActiveControl
property (instead of Focus
) from my Validated event handler a safe way to positively activate the control I want? If not, are there any solutions?
Because the .NET Compact Framework doesn't have the ActiveControl
property, can anyone suggest a solution?