找人写一段小程序。
虽然csdn上有许多关于textbox只能输入数字的帖子,但是还没有找到符合要求的代码。希望能完成这样一种功能:
WinForm, C# .net2.0
1. 除了数字0~9、小数点、正负号、delete键盘都不能输入;
2. 如果输入的数字是大于0或者小于-20的,则弹出对话框
MessageBox.Show("Please Enter a number between -20 and 0");
3. 如果textbox中什么都没有(null状态)用户就将光标点到其他的地方同样弹出上述对话框。
第一个要求已经达到了,采用的是
private void Textbox0_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 45))
e.Handled = true;
base.OnKeyPress(e); // if ((Convert.ToDouble(Textbox0.Text)) > 0)
// MessageBox.Show("Please Enter a number between -20 and 0");
}同时我想用 private void Textbox0_TextChanged(object sender, EventArgs e)
{
if ((Convert.ToDouble(Textbox0.Text)) > 0)
MessageBox.Show("Please Enter a number between -20 and 0");
if ((Convert.ToDouble(Textbox0.Text)) <-20)
MessageBox.Show("Please Enter a number between -20 and 0");
}但是程序不认负号,每次输入“-”的时候就会跳出说输入的string不符合要求。
虽然csdn上有许多关于textbox只能输入数字的帖子,但是还没有找到符合要求的代码。希望能完成这样一种功能:
WinForm, C# .net2.0
1. 除了数字0~9、小数点、正负号、delete键盘都不能输入;
2. 如果输入的数字是大于0或者小于-20的,则弹出对话框
MessageBox.Show("Please Enter a number between -20 and 0");
3. 如果textbox中什么都没有(null状态)用户就将光标点到其他的地方同样弹出上述对话框。
第一个要求已经达到了,采用的是
private void Textbox0_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 45))
e.Handled = true;
base.OnKeyPress(e); // if ((Convert.ToDouble(Textbox0.Text)) > 0)
// MessageBox.Show("Please Enter a number between -20 and 0");
}同时我想用 private void Textbox0_TextChanged(object sender, EventArgs e)
{
if ((Convert.ToDouble(Textbox0.Text)) > 0)
MessageBox.Show("Please Enter a number between -20 and 0");
if ((Convert.ToDouble(Textbox0.Text)) <-20)
MessageBox.Show("Please Enter a number between -20 and 0");
}但是程序不认负号,每次输入“-”的时候就会跳出说输入的string不符合要求。
解决方案 »
- 两个pictureBox叠加,如何只刷新子控件的那一个?
- C#中各种控件的属性,难道全部都要记住吗?
- 用过绿色SQL(GSQL)的朋友看过来
- 访问第三方Oracle数据库的问题?在线等,请指教!!
- datagrid显示
- 如何得到checkboxlist里面所有已选择钩的值
- ADO.NET三层架构怎么安装项目
- 如何判断XML文件中 某个节点是否存在,不存在为NULL时怎么继续添加节点
- 我想在双击 dataGrid 时将选种的行的数据按字段在新窗体中显示,请问大概该怎么做?
- 在C#重怎样实现两个进程之间的通讯,散分,发言有分
- 函式 'Instance' 並未傳回有關所有程式碼路徑的值。使用該結果時,可能會在執行階段發生 null 參考例外狀況。
- 如何实现曲线放大?
{
if (((e.KeyChar == '-') ^ (char.IsDigit(e.KeyChar))) == false)
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
}
} if (ItemInfo.Type.Contains("d"))
{
if (char.IsDigit(e.KeyChar) == false)
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
}
}
if (ItemInfo.Type.Contains("f"))
{
if (((e.KeyChar == '.') ^ (char.IsDigit(e.KeyChar))) == false)
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
} if (txt.Text.Contains("."))
{
if (!char.IsDigit(e.KeyChar))
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
}
} if (txt.Text.StartsWith("."))
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
} string[] Temps = ItemInfo.Type.Split('.');
if (Temps.Length == 2 && txt.Text.Split('.').Length == 2)
{
if (!string.IsNullOrEmpty(Temps[1]) && !string.IsNullOrEmpty(txt.Text.Split('.')[1]))
{
if (Temps[1].Length == txt.Text.Split('.')[1].Length)
{
if (char.IsControl(e.KeyChar) == false)
{
e.Handled = true;
}
}
}
} }
{
if (this.textBox1.Text == "-" || this.textBox1.Text=="+")
return;
try
{
double i = Double.Parse(this.textBox1.Text);
if (i > 0.0 || i < -20.0)
MessageBox.Show("Error");
}
catch (FormatException fe)
{
MessageBox.Show(fe.ToString());
}
}
private void textBox1_Leave(object sender, EventArgs e)
{
if(string.IsNullOrEmpty(this.textBox1.Text))
MessageBox.Show("Error");
}
MessageBox.Show("Please Enter a number between -20 and 0"); 比如我输入-198, 是当刚按下8时就Message,还是当点击其他地方时才报错?要是我复制->粘贴过来一个文本呢?
别用TextboxChange事件
其他不变
可以实现你第三个要求吧!private void textBox1_Validating(object sender, CancelEventArgs e)
{
TextBox tb = (TextBox)sender; if (tb.Text == "")
MessageBox.Show("Nothing");
}
{
TextBox tb = (TextBox)sender; if (tb.Text == ""
|| Convert.ToInt32(tb.Text)>0||
Convert.ToInt32(tb.Text) <-20)
MessageBox.Show("Please Enter a number between -20 and 0");
}
在失去焦点的时候 检查你的第2 3项要求
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && (e.KeyChar != 8) && (e.KeyChar != 45))
{
e.Handled = true;
}
} private void textBox1_Validating(object sender, CancelEventArgs e)
{
TextBox tb = (TextBox)sender; if (tb.Text == "" || Convert.ToInt32(tb.Text) > 0 || Convert.ToInt32(tb.Text) < -20)
{
MessageBox.Show("Please Enter a number between -20 and 0");
} } private void textBox1_KeyDown(object sender, KeyEventArgs e)
{
if (e.KeyCode == Keys.Enter)
{
TextBox tb = (TextBox)sender;
if (Convert.ToDouble(tb.Text) > 0 || Convert.ToDouble(tb.Text) < -20)
{
MessageBox.Show("Please Enter a number between -20 and 0");
}
}
}可以满足你的要求吧,如果有button,要写button的click事件处理程序!
{
if(-20<Convert.Toint32(PutNumber.Text.Trim())<0)
{}
else
{
MessageBox.Show("Please Enter a number between -20 and 0");}
}
至于判断数字的大小的话,可以在textbox失去焦点的时候进行判断