WinForms: I don’t want any tab order. I want myself be able to programatically handle all the tab orders on the form with some logic that I need.
How can I completely disable tab order? I assume after that I should deal with KeyDown event of each contorl or some similar event ….
WinForms: I don’t want any tab order. I want myself be able to programatically
Share
You need to override the form’s ProcessCmdKey() method. Test keydata == Keys.Tab and (Keys.Shift | Keys.Tab) to detect respectively a forward and a backward tab. Return true to indicate that you’ve used the key and it shouldn’t be used anymore. Which defeats Winforms default handling for the Tab key. No additional changes are needed to the controls.
The form’s ActiveControl property tells you which control currently has the focus, you’ll need to use it to figure out which control should be focused next. Beware that it can technically be null. Watch out for controls that are embedded in a container control, like a Panel or UserControl. Making this work is definitely unpleasant, also very hard to maintain. Only do this if there are a limited number of controls on the form.