There are plenty of controls out there that will allow only numeric entry but they may not meet your needs. If you don’t want the up/down buttons, the built-in NumericUpDown control won’t be of use and using one of those huge libraries just for their numeric control may be overkill. If that describes your position, this uber-simple control may fit the bill.
public class NumberControl : TextBox { /// <summary> /// Creates a new <see cref="NumberControl"/> instance. /// </summary> public NumberControl() { TextAlign = HorizontalAlignment.Right; } /// <summary> /// Triggered when a key is pressed. Swallows all keys except for digits. /// </summary> protected override void OnKeyPress(KeyPressEventArgs e) { base.OnKeyPress(e); string decimalSeparator = CultureInfo.CurrentCulture.NumberFormat.NumberDecimalSeparator; if (e.KeyChar.ToString() == decimalSeparator) { if (Text.IndexOf(decimalSeparator) > -1) e.Handled = true; } else if (!char.IsDigit(e.KeyChar) && !char.IsControl(e.KeyChar)) { e.Handled = true; } } }
No comments:
Post a Comment