2

我想做一个TextBox不允许输入大于 100 的值。只允许输入数字,并且TextBox不能选择数字。这是我现在的代码:

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    if (!char.IsControl(e.KeyChar) && !char.IsDigit(e.KeyChar)) { e.Handled = true; }  // only numbers
}

有任何想法吗?

4

4 回答 4

4

你应该使用int.TryParse看解析是否成功,然后比较值看是否低于100。

int number;
if(int.TryParse(textBox1.Text, out number))
{
  if(number <= 100) 
    {
     //in range
    }
  else
    {
     // not in range
    }
}
else
{
//invalid number
}

您还可以根据类型使用double.TryParse或其他方法,它们可以安全使用,因为如果解析失败,它们将返回 a,而不是引发异常。TryParsefalse

于 2013-05-27T18:00:09.627 回答
0

您只能输入数字并使用箭头键和退格键。如果您输入的数字大于 100 或小于 1,当您按下回车键时,它将被取消。按下按钮复制和粘贴被禁用,并且鼠标右键单击以防止用户在文本框中粘贴被禁用/处理。这应该可以完全解决您的问题。首先设置:

    ShortcutsEnabled property of your text box to False

这将不允许鼠标右键单击和 ctrl+V 粘贴到您的文本框中。然后添加以下代码:

    //prevent letters, special chars, punctuation, symbols, white spaces
    private void txtType1_KeyPress(object sender, KeyPressEventArgs e)
    {
        {
            if (char.IsLetter(e.KeyChar) ||
                char.IsSymbol(e.KeyChar) ||
                char.IsWhiteSpace(e.KeyChar) ||
                char.IsPunctuation(e.KeyChar))
                e.Handled = true;
        }

        {
            //allows only numbers between 1 and 100
            string value = txtType1.Text;
            if (txtType1.Text !="")

            {
                if (Int16.Parse(value) < 1 )
                {
                    txtType1.Text = ""; 
                }
                else if (Int16.Parse(value) > 100)
                {
                    txtType1.Text = "";
                }

                }
            }
        }
于 2013-05-28T08:01:02.920 回答
0

最后。我找到了一个解决方案:

int box_int = 0; Int32.TryParse(textBox1.Text, out box_int);
if (box_int > 1050 && textBox1.Text != "") { textBox1.Text = "1050"; }
于 2013-05-27T22:14:02.693 回答
0

您好,这是我的解决方案。



    private void textBox_KeyPress(object sender, KeyPressEventArgs e)
            {
                char c = e.KeyChar;
                if ((!char.IsDigit(c) ||
                    Convert.ToInt32(textBox.Text + e.KeyChar) >= 101 ||
                    textBox.Text == "0") && c != '\b')
                    e.Handled = true;

            }

于 2017-03-30T03:29:47.353 回答