假设有一个textBox,一个按钮
按下按钮后,有这段代码:switch (Convert.ToInt32(textBox1.Text))
{
                case 1: textBox3.Text=array[0]; break;
                case 2: /*...*/ break;
                case 3: /*...*/ break;
/*...*/
}
就是说只能输入1,2,3这三个数字,如果输入其他的,会弹出对话框报错。
但是实际上,如果textBox中输入了字母,会导致程序崩溃,关键是这个函数Convert.ToInt32()
那么该怎样?

解决方案 »

  1.   

    if(int.tryparse(textBox1.Text,out i))
      

  2.   

    要么输入一个判断一次,就是Text_change事件判断,不是1,2,3就return 下要么写个正则表达式!
      

  3.   

    try catch 以后 用正则表达式判断,或者onkeydown的时候 获取textbox的字符串,转成数组,然后判断每个字符是什么是否在你说的范围之内
      

  4.   

    bool flag;
            int i;
            flag=int.TryParse(this.a.Value,out i);
            if (flag)
            {
                Response.Write("数字"+i);
            }
            else
            {
                Response.Write("非数字"+i);            
            }
      

  5.   

    你可以给button加上一段js 啊
      

  6.   

     <asp:TextBox ID="TextBox1" runat="server"></asp:TextBox>
            <asp:Button ID="Button1" runat="server"  Text="Button" OnClientClick="return checkInput()" OnClick="Button1_Click" /></div><script type="text/javascript">
        function checkInput()
        {
            var value=document.getElementById("TextBox1").value;
            if(value=1)
            {
                alert('不能为1');
                return false;
            }
        }
        </script>
      

  7.   

    如果你非要在按钮事件里面写的话,可以这样判断
     protected void Button1_Click(object sender, EventArgs e)
        {
            int value=0;
            if (Int32.TryParse(this.TextBox1.Text.Trim(),out  value))
            {
                switch (value)
                {
                    
                    case 1: this.TextBox1.Text = "i love you"; break; 
                }
            }
            else {
                Response.Write("err");
            }
        }