Tengo un UserControl que consta de tres cuadros de texto. En un formulario, puedo tener uno o más o mi UserControl. Quiero implementar mi propio comportamiento de pestañas, así que si el usuario presiona Tab en el segundo cuadro de texto, solo debería pasar al tercer cuadro de texto si el segundo cuadro de texto tiene algo ingresado. Si no se ingresa nada en el segundo cuadro de texto, el siguiente control del formulario debe obtener el foco según el comportamiento normal de la pestaña. Si el usuario no ha ingresado nada en el primer o segundo cuadro de texto y en la pestaña de imprenta, existe este caso especial en el que se debe omitir un control en el formulario.Anula el comportamiento de la pestaña en WinForms
Al usar ProcessDialogKey, he logrado que funcione, pero todavía tengo un problema. Mi pregunta es si hay una manera de detectar cómo un control WinForms obtuvo el foco, ya que también me gustaría saber si mi UserControl obtuvo el foco de una pestaña o Shift-Tab y luego hago las cosas más raras, pero si el usuario hace clic en el control, no quiero hacer nada especial.