Para el caso de obligar a un TextBox en Windows forms para que solo acepte números, tenemos que agregar una funciona al textbox en su evento KeyPress. Esto lo podemos hacer dando clic en el control y en la pantalla de propiedades seleccionar el botón de eventos (el relámpago) y dar doble clic en el evento llamado KeyPress. Una vez que se asigna una función automática, ponemos el siguiente código:
private void MiTextBox_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) ) { e.Handled = true; } }
Con eso bastara para obligar a tu control a no permitir letras ni otros caracteres que no sean números.
Podemos hacer lo mismo para números con decimales, pegando el siguiente código.
private void MiTextBox_KeyPress(object sender, KeyPressEventArgs e) { if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar) && (e.KeyChar != '.')) { e.Handled = true; } // solo 1 punto decimal if ((e.KeyChar == '.') && ((sender as TextBox).Text.IndexOf('.') > -1)) { e.Handled = true; } }