Quando l'evento di pressione del tasto viene intercettato, occorre annullare la pressione del tasto se si desidera che non venga veicolato al controllo (che provvederà ad inserirlo nel punto giusto) indicando che è già stato "gestito" dal codice dell'evento.

In fondo, è sufficiente leggere la documentazione degli eventi di cui si fa uso.

Da un punto di vista progettuale, se lo scopo è quello di creare una casella di testo dall'input controllato, non si dovrebbe creare uno UserControl, ma un discendente del controllo TextBox: oltre ad essere più corretto, si tratta di una soluzione che fornisce di gran lunga più possibilità, in quanto si accede ai membri protected della classe base.

Ciao!