C#的textbox多行模式限制输入

丨QAQ丨 2015-10-26 10:02:53

private void AllCount()
{
foreach (string num in txbAllWater.Lines)
{
x = Convert.ToDouble(num);

if (x < 0)
{
lisBoxAllMoney.Items.Add("用水量:" + x + " 立方米," + "用水量不可能小于0!");
}
else if (x >= 0 && x <= 22)
{
y = 1.9 * x + 0.9 * x * 0.9;
lisBoxAllMoney.Items.Add("用水量:" + x + " 立方米," + "应缴水费:" + y.ToString() + " 元");
}
/*else...*/
}
}

private void txbAllWater_KeyPress(object sender, KeyPressEventArgs e)
{
if ((e.KeyChar < 48 || e.KeyChar > 57) && e.KeyChar != 8 && e.KeyChar != 13 && e.KeyChar != 45 && e.KeyChar != 46)
{
e.Handled = true;
}
}

请问要怎么限制textbox每行只能输入一个小数点和一个负号(负数,负号只能在第一位) ,
还有当某一行没有输入内容时(如多按了回车键),要怎么直接在 lisBoxAllMoney中显示“用水量不能为空”
...全文
257 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
丨QAQ丨 2016-05-15
  • 打赏
  • 举报
回复
好的,谢谢大家了
crystal_lz 2015-10-28
  • 打赏
  • 举报
回复
从 textbox 限制输入上着手 还不如好好 考虑 怎么验证数据 就算用户每按下一次键盘 你判断一下当前输入的是否有效 那么用户ctrl v呢?或者右键粘贴呢? 还不如在需要提交的时候 直接一次性来验证输入的值是否有效
qqlijiajian 2015-10-28
  • 打赏
  • 举报
回复
引用 4 楼 hjkl950217 的回复:
[quote=引用 3 楼 qq719468186 的回复:] [quote=引用 2 楼 qqlijiajian 的回复:] 引用1楼的,在keypress和changes事件或者button事件中 加几个判断就好了, 1.获取textbox的值,用indexof('-')找到位置判断是否在第一位. 2.获取textbox的值,用ToCharArray()把它转换成char[]数组,遍历匹配小数点个数. 3.textbox.ToString().Replace(" ","");空格替换后,判断是否为空
请问小数点和负数那个要怎么弄啊?这两个还是不知道怎么弄_(:зゝ∠)_ 我再把问题描述下,假如textbox中 第一行为 -1.0 第二行为 -2.5 在第一行输入小数点后就不能在输入小数点,但是第二行还是可以输入小数点 负号同样,且只能在每行左边第一个位置[/quote]texBox控件里的text属性实际上是一个String类型的数据,多行其实是一行的。以\r\n换行。你要分行处理的话 用\r\n分割一下就行了[/quote] 引用3#所说的,多行的话就用split("\r\n")分割成string[] 然后进行遍历在里面做我之前说的1、2判断做剩余操作。
devmiao 2015-10-27
  • 打赏
  • 举报
回复
在keypress和changes事件判断下
qqlijiajian 2015-10-27
  • 打赏
  • 举报
回复
引用1楼的,在keypress和changes事件或者button事件中 加几个判断就好了, 1.获取textbox的值,用indexof('-')找到位置判断是否在第一位. 2.获取textbox的值,用ToCharArray()把它转换成char[]数组,遍历匹配小数点个数. 3.textbox.ToString().Replace(" ","");空格替换后,判断是否为空
长空X 2015-10-27
  • 打赏
  • 举报
回复
引用 3 楼 qq719468186 的回复:
[quote=引用 2 楼 qqlijiajian 的回复:] 引用1楼的,在keypress和changes事件或者button事件中 加几个判断就好了, 1.获取textbox的值,用indexof('-')找到位置判断是否在第一位. 2.获取textbox的值,用ToCharArray()把它转换成char[]数组,遍历匹配小数点个数. 3.textbox.ToString().Replace(" ","");空格替换后,判断是否为空
请问小数点和负数那个要怎么弄啊?这两个还是不知道怎么弄_(:зゝ∠)_ 我再把问题描述下,假如textbox中 第一行为 -1.0 第二行为 -2.5 在第一行输入小数点后就不能在输入小数点,但是第二行还是可以输入小数点 负号同样,且只能在每行左边第一个位置[/quote]texBox控件里的text属性实际上是一个String类型的数据,多行其实是一行的。以\r\n换行。你要分行处理的话 用\r\n分割一下就行了
丨QAQ丨 2015-10-27
  • 打赏
  • 举报
回复
引用 2 楼 qqlijiajian 的回复:
引用1楼的,在keypress和changes事件或者button事件中 加几个判断就好了, 1.获取textbox的值,用indexof('-')找到位置判断是否在第一位. 2.获取textbox的值,用ToCharArray()把它转换成char[]数组,遍历匹配小数点个数. 3.textbox.ToString().Replace(" ","");空格替换后,判断是否为空
请问小数点和负数那个要怎么弄啊?这两个还是不知道怎么弄_(:зゝ∠)_ 我再把问题描述下,假如textbox中 第一行为 -1.0 第二行为 -2.5 在第一行输入小数点后就不能在输入小数点,但是第二行还是可以输入小数点 负号同样,且只能在每行左边第一个位置

111,110

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧