Quando si ha bisogno di una textbox numerica spesso la soluzione consiste nell'andare nell'evento Keypress e filtrare i tasti indesiderati.
Questo approccio ha però lo svantaggio di non essere riutilizzabile e di non gestire il caso in cui il contenuto della texbox provenga dalla clipboard.
Una soluzione alternativa è quella di crearsi una propria textbox numerica impostando lo style a ES_NUMBER.

public class NumericTextbox : TextBox
{
  protected override CreateParams CreateParams  {
  get 
   
 {
        CreateParams cp = base.CreateParams;
        cp.Style |= 0x2000; // ES_NUMBER
        return cp;
      }
  }
}


ottenendo anche un feedback automatico all'utente quando preme un tasto non ammesso.

Anche se la documentazione MSDN dice il contrario non è possibile incollare testo che contiene caratteri non numerici (Ho verificato solo su Windows Vista...)