Вы можете использовать элемент управления NumericUpDown или MaskedTextBox (документ MSDN Пошаговое руководство при его использовании) или, возможно, пользовательский, например, такой CodeProject MaskedEdit элемент управления или другой: FlexMaskEditBox .
Вот реализация руководства , связанная с вашим вопросом:
Во-первых, установите для свойства TextBox
MaxLenght
значение 3
, чтобы оно ограничивало ввод до 3 цифр.
Фильтруйте пользователяНажмите, чтобы принимать только цифры и BackSpace:
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar != (char)Keys.Back & !char.IsDigit(e.KeyChar))
e.Handled = true;
}
Убедитесь, что Keys.D0
не вставлен в первую позицию:
private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.D0)
{
if (textBox1.Text.Length == 0 || textBox1.SelectionStart == 0)
e.SuppressKeyPress = true;
}
}
Anti-Paste:отклоняет внезапные изменения в тексте TextBox
, если вставленный текст не может быть переведен в число Integer
.
Удаляет 0
s в неправильной позиции и другие нецифровые символы:
private void textBox1_TextChanged(object sender, EventArgs e)
{
if (textBox1.Text.Length > 0)
{
if (textBox1.Text.Substring(0, 1) == "0")
textBox1.Text = textBox1.Text.Substring(1);
else
if (!int.TryParse(textBox1.Text, out int Number))
textBox1.Text = string.Empty;
}
}