带有maxvalue的TextBox

时间:2013-05-27 17:58:34

标签: c#

我想制作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 个答案:

答案 0 :(得分: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或其他TryParse方法,具体取决于类型,它们可以安全使用,因为如果解析失败,它们将返回false,而不是提高例外。

答案 1 :(得分:0)

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

int box_int = 0; Int32.TryParse(textBox1.Text, out box_int);
if (box_int > 1050 && textBox1.Text != "") { textBox1.Text = "1050"; }

答案 2 :(得分:0)

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

    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 = "";
                }

                }
            }
        }

答案 3 :(得分: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;

            }