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...)