黑马程序员技术交流社区

标题: 请求高手解答计算器中文本框的属性设置小问题? [打印本页]

作者: 蒋敦方    时间: 2012-4-17 16:25
标题: 请求高手解答计算器中文本框的属性设置小问题?
如图所示,我不想让文本框中 前面 两个连续输入两个0以上,但是可以让其第二个数后面可以连续输入连续的0。用代码如何实现,请求高手解答?谢啦!
作者: 马跃    时间: 2012-4-17 16:46
用JS或者正则表达式都可以

JS可以这么判断:
var strtxt=document.getElementById("textbox的id")..value
if(IsNan(num))
{
    alert("只能输入数字")
}
如果不是web项目就用正则吧
作者: 胡振超    时间: 2012-4-17 17:45
KeyPress事件  
            TextBox txt = sender as TextBox;
            if (txt.SelectionStart == 0 && e.KeyChar == '0')
            {
                e.Handled = true;
            }
作者: 余晓亮    时间: 2012-4-17 18:23
胡振超 发表于 2012-4-17 17:45
KeyPress事件  
            TextBox txt = sender as TextBox;
            if (txt.SelectionStart == 0  ...

个人觉得这是正解
作者: 蒋敦方    时间: 2012-4-18 10:33
胡振超 发表于 2012-4-17 17:45
KeyPress事件  
            TextBox txt = sender as TextBox;
            if (txt.SelectionStart == 0  ...

大哥你这是把第一个数阻止了0的输入好不好!
作者: 周俊辉    时间: 2012-4-18 11:47
  1. using System;
  2. using System.Collections.Generic;
  3. using System.ComponentModel;
  4. using System.Data;
  5. using System.Drawing;
  6. using System.Linq;
  7. using System.Text;
  8. using System.Windows.Forms;
  9. using System.Text.RegularExpressions;


  10. namespace heima
  11. {
  12.     public partial class Form2 : Form
  13.     {
  14.         public Form2()
  15.         {
  16.             InitializeComponent();
  17.         }

  18.         private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  19.         {
  20.             if (textBox1.Text.Length >= 2)
  21.             {
  22.                 string s =textBox1.Text.Substring(0, 1) ;
  23.                 Console.Write(textBox1.Text.Substring(1, 1));

  24.                 if (textBox1.Text.Substring(0, 1) == "0" && textBox1.Text.Substring(1, 1) == "0")
  25.                 {
  26.                   
  27.                     textBox1.Text = "";
  28.                   
  29.                 }
  30.             }

  31.            
  32.         }

  33.         private void button1_Click(object sender, EventArgs e)
  34.         {
  35.             decimal  i = decimal.Parse(textBox1.Text);
  36.             int j = int.Parse(textBox2.Text);
  37.             switch (comboBox1.SelectedIndex)
  38.             {
  39.                 case 0:
  40.                     label5.Text = "加法运算结果:" + (i + j);
  41.                     break;
  42.                 case 1:
  43.                     label5.Text = "加法运算结果:" + (i - j);
  44.                     break;

  45.                 case 2:
  46.                     label5.Text = "加法运算结果:" + (i * j);
  47.                     break;

  48.                 case 3:
  49.                     label5.Text = "加法运算结果:" + (i / j);
  50.                     break;


  51.             
  52.             }

  53.         }

  54.         private void textBox2_KeyPress(object sender, KeyPressEventArgs e)
  55.         {
  56.             if (textBox2.Text.Length >= 2)
  57.             {
  58.                 string s = textBox2.Text.Substring(0, 1);
  59.                 Console.Write(textBox2.Text.Substring(1, 1));

  60.                 if (textBox2.Text.Substring(0, 1) == "0" && textBox2.Text.Substring(1, 1) == "0")
  61.                 {

  62.                     textBox2.Text = "";

  63.                 }
  64.             }
  65.         }
  66.     }
  67. }
复制代码
[img=10,10]http://bbs.itheima.com/static/image/common/emp.gif[/img]
作者: 周俊辉    时间: 2012-4-18 11:50
几位楼上的回答只能判断前面第一位输入不能为0  很明显跟LZ的意思不相符合  怎么图片发不了呢。。。  
再发次。。  
作者: 胡振超    时间: 2012-4-18 12:30
蒋敦方 发表于 2012-4-18 10:33
大哥你这是把第一个数阻止了0的输入好不好!

抱歉 ,我审错题了  修改了一下 这样就没问题了
  1.         int startnum = 1;//定义全局变量  起始位置
  2.         private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  3.         {
  4.             TextBox txt = sender as TextBox;

  5.             if (txt.SelectionStart == 0)
  6.             {
  7.                 //如果输入的第一个数字为0就设置开始数字为0,如果为小数点设置开始数字为0,并且让文本框显示“0.”,起始位置改为3
  8.                 switch (e.KeyChar)
  9.                 {
  10.                     case '0': startnum = 0; break;
  11.                     case '.': startnum = 0; textBox1.Text = "0."; txt.SelectionStart = 3; break;
  12.                     default: break;
  13.                 }
  14.             }
  15.             //如果第一个位置输入了0 第二个位置就必须输入小数点
  16.             if (txt.SelectionStart == 1 && startnum == 0 && e.KeyChar != '.')
  17.             {
  18.                 //排除退格键,其他输入全禁用
  19.                 if (e.KeyChar == 8)
  20.                 {
  21.                     e.Handled = false;
  22.                 }
  23.                 else
  24.                 {
  25.                     e.Handled = true;
  26.                 }
  27.             }
  28.         }
复制代码

作者: 胡振超    时间: 2012-4-18 12:47
参考周俊辉同学的又修改了下我的
  1.         private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
  2.         {
  3.             TextBox txt = sender as TextBox;

  4.             if (txt.SelectionStart == 0&&e.KeyChar=='.')
  5.             {
  6.                 //如果输入的为小数点让文本框显示“0.”,起始位置改为3
  7.                 txt.Text = "0.";
  8.                 txt.SelectionStart = 3;
  9.             }
  10.             //如果第一个位置输入了0 第二个位置就必须输入小数点

  11.             if (txt.SelectionStart == 1 && int.Parse(txt.Text.Substring(0, 1)) == 0 && e.KeyChar != '.')
  12.             {
  13.                 //排除退格键,其他输入全禁用
  14.                 if (e.KeyChar == 8)
  15.                 {
  16.                     e.Handled = false;
  17.                 }
  18.                 else
  19.                 {
  20.                     e.Handled = true;
  21.                 }
  22.             }
  23.         }
复制代码

作者: 蒋敦方    时间: 2012-4-18 22:02
{:soso_e179:}OK!谢谢,指教!{:soso_e121:}




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2