我的应用程序要求输入一个数字,该数字应限制为:
最多3位数
我相信通过使用TextChanged
WinForms
事件,我找到了实施大多数要求的正确方法。
我需要帮助的部分是防止看到任何非数字击键,即使是在几分之一秒内。需要某种回声消除/替换。
答案 0 :(得分:0)
您可以使用NumericUpDown控件或MaskedTextBox控件(MSDN文档Walkthrough使用它),也可以使用自定义控件,例如此CodeProject MaskedEdit控件或另一个:FlexMaskEditBox。
以下是与您的问题相关的手动实施:
首先,将TextBox
MaxLenght
属性设置为3
,这样就可以将输入限制为最多3个数字。
过滤用户Keypress只接受Digits和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;
}
}
反粘贴:如果插入的文字无法翻译为TextBox
,则拒绝对Integer
文字进行突然更改。
删除错误位置的0
和其他非数字字符:
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;
}
}