我想制作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
}
有什么想法吗?
答案 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;
}