Form semplicissimo, al Load setto alcuni parametri e posiziono alcuni controlli.

Il Form contiene una Text Box, che seleziono al Load con un TextBox1.Select().

Se imposto Form.TopMost = False, al lancio il Form si attiva (come ovvio), il cursore lampeggia nella TextBox e se premo qualche tasto... scrivo.

Se imposto Form.TopMost = True, al lancio il Form si attiva (come ovvio), il cursore lampeggia nella TextBox e se premo qualche tasto..... non succede niente!!!

Il form è attivato anche nel secondo caso, come verifico tramite:

codice:
    Private Sub FrmPanel1_Activated(bla bla)
        pic1.Image = My.Resources.verdescuro
    End Sub

    Private Sub FrmPanel1_Deactivate(bla bla)
        pic1.Image = Nothing
    End Sub
L' immagine appare, il cursore lampeggia, sembrerebbe tutto pronto a recepire l' input da tastiera... ma non scrivo niente.

Non serve a nulla neanche inserire un Me.BringToFront. Devo per forza usare la API ForceForegroundWindow.

C' è qualcosa che mi sfugge??

NOTA: se in Private Sub FrmPanel1_Shown scrivo:
Debug.Print("MeHandle: " & Me.Handle.ToString & " -GetForegroundWindow: " & NativeMethods.GetForegroundWindow.ToString)

ottengo: MeHandle: 2818728 -GetForegroundWindow: 65620

dove 65620 è l' handle della ShellTray...............