一个文本框中最多只能包含三位数字字符
本文关键字:包含三 数字字符 一个 文本 | 更新日期: 2023-09-27 17:57:58
有没有一种方法只允许用户在文本框中输入最大字符数?我希望用户输入一个分数/等级,并且只能输入0-100。下面我有一些代码可以监控击键,只允许输入数字,但我想找到一种方法,只允许用户输入最小值为0、最大值为100的数字。
private void TxtMark4_KeyPress(object sender, KeyPressEventArgs e)
{
if (e.KeyChar < '0' || e.KeyChar > '9' || e.KeyChar == ' ')
{
e.Handled = true;
}
else
{
e.Handled = false;
}
}
或者我可以使用以下内容:
if (e.KeyChar >= 48 && e.KeyChar <= 57 || e.KeyChar == ' ')
{
e.Handled = false;
}
else
{
MessageBox.Show("You Can Only Enter A Number!");
e.Handled = true;
}
但我想找到一种最多只允许输入三个字符的方法。
我认为它很简单:
textBox1.MaxLength = 3;
然后处理Leave事件的最大值:
private void textBox1_Leave(object sender, EventArgs e)
{
string s = (sender as TextBox).Text;
int i = Convert.ToInt16(s);
if (i > 100)
{
MessageBox.Show("Number greater than 100");
(sender as TextBox).Focus();
}
}
或
您也可以使用System.Windows.Forms.NumericUpDown轻松设置最小值和最大值。
如果解析失败,此版本将textBox1.Text设置为空字符串
private void textBox1_TextChanged(object sender, EventArgs e) {
int i;
textBox1.Text=
false==int.TryParse(textBox1.Text, out i)||0>i||i>100
?""
:i.ToString();
}
如果你想保留部分成功解析的号码,那么
String previousText="";
private void textBox1_TextChanged(object sender, EventArgs e) {
var currentText=textBox1.Text;
int i;
textBox1.Text=
int.TryParse(currentText, out i)
?0>i||i>99
?previousText
:i.ToString()
:""==currentText?currentText:previousText;
previousText=textBox1.Text;
}
对于每一个可能的用户错误,我都会这样做。
我假设您的文本框名为TxtMark4。编写txtMark4.Content()或在执行TryParse 的if测试中读取框架中文本框内容所需的内容
private void TxtMark4_KeyPress(object sender, KeyPressEventArgs e)
{
int? tmp = null; //signed to allow it to be assigned the value of null
if(int.TryParse(txtMark4.Text,out tmp)){
if(tmp >=0 && tmp <= 100){
//Here the number is between 0 and 100
}
else{//Number is below 0 or above 100
if(tmp > 100){
TxtMark4.Text = TxtMark4.Text.remove(2); //This will forcefully make it less or equal to 100
DisplayLabel.text = "Numbers between 0-100 only";
}
else{
TxtMark4.Text = ""; //and if its below 0 it will not be displayed
DisplayLabel.text = "Numbers between 0-100 only";
}
}
}
else{//Not a number
//Return some indicator to the user
DisplayLabel.text = "numbers only";
}
}