有个TextBox
现在要求是,这个文本框只能输入0-255的数字和*号,当输入*号的时候,就默认代表了0-255这所有的256个数字,并且出现了一个*号后,*后面就不能再输入*号(仅有一个*号)
其实就是个IP地址问题,文本框只能输入0-255的数字和*号,*号的时候就包括0-255这一段的256个IP不用正则写

解决方案 »

  1.   

    private void Form1_Load(object sender, EventArgs e)
    {
        textBox1.MaxLength = 3; // 可以到属性中设置
    }private void textBox1_TextChanged(object sender, EventArgs e)
    {
        if (((TextBox)sender).Text == string.Empty) return; // 为空时不处理
        int vInteger;
        if (!int.TryParse(((TextBox)sender).Text, out vInteger) || vInteger > 255) 
            // 当不能转换为整数或者数值大于255时设置为0
            ((TextBox)sender).Text = "0"; 
    }private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
    {
        if (e.KeyChar == '*') // 输入星号则Text设置为一个星号
        {
            ((TextBox)sender).Text = "*";
            e.Handled = true;    } else e.Handled = ("0123456789" + (char)Keys.Back).IndexOf(
            char.ToUpper(e.KeyChar)) < 0; // 只能输入数字或退格键
    }
      

  2.   

    if (!int.TryParse(((TextBox)sender).Text, out vInteger) || vInteger > 255 
        || vInteger < 0)  // 保险起见可以判断一下负数
      

  3.   

    搞忘说了
    不是一个文本框,是4个文本框
    一个文本框只能输入0-255和*
    如下所视:
    textbox1   .   textbox2   .   textbox3   .   textbox4
    0-255或则*     0-255或则*     0-255或则*     0-255或则*
    这4个textbox和起来才构成了一个完整的IP地址 (中间的.号已经处理)
    不是一个单独的textbox里面写一个完整的IP地址
      

  4.   

    四个文本框的相应事件都设置为:textBox1_TextChanged和textBox1_KeyPress
      

  5.   

    还有就是 KeyPressEventArgs 不能用
    using   System.Windows.Forms;  这个命名空间加不上
      

  6.   

    在.NET版没有人回
    就跑这来了
      

  7.   

    这个得用javascript来实现了,你可以转到“Web开发 JavaScript”版问问,或者等等<style>
    input
    {
    border:1px solid black;
    }
    </style>
    <SCRIPT language="javascript">
    <!--start
    /*
     * added by Lxcjie 2004.6.11
     * 约束输入框的内容
     * 适用于IE5.0及以上版本
     * oObj: 输入框控件对象
     * reg:  正则表达式
     * isChinese:是否允许打开输入法,true 允许打开,即允许输入中文,false 不能打开,默认为不允许打开
     * usage:
     *
     *   //只能输入数字和大小写字母
     *<BODY onLoad="regInputRestriction(document.all.txt,/^[0-9a-zA-Z]*$/)">
     *<input id="txt">
     * </BODY>
     */
    function regInputRestriction(oObj,reg,isChinese)
    {
    function regInput(obj, reg, inputStr)
    {
    var docSel= document.selection.createRange();
    if (docSel.parentElement().tagName.toLowerCase() != "input")
    return false;
    oSel = docSel.duplicate();
    oSel.text = "";
    var srcRange = obj.createTextRange();
    oSel.setEndPoint("StartToStart", srcRange);
    var str = oSel.text + inputStr + srcRange.text.substr(oSel.text.length);
    return reg.test(str);
    }
    //限制输入法是否允许打开
    if(isChinese == null)
    isChinese = false;
    if(isChinese)
    oObj.style.imeMode = "auto";
    else
    oObj.style.imeMode = "disabled";//注册事件
    oObj.onkeypress = function()
    {
    return regInput(this,reg,String.fromCharCode(event.keyCode));//输入时激发
    }
    oObj.onpaste = function()
    {
    return regInput(this,reg,window.clipboardData.getData('Text'));//粘贴时激发
    }
    oObj.ondrop = function()
    {
    return regInput(this,reg,event.dataTransfer.getData('Text'));//拖拽时激发
    }
    }
    //-->
    </SCRIPT>
    <script language="javascript">
    function initForm()
    {
    regInputRestriction(document.all.onlyNumber,/^[0-9]*$/);
    regInputRestriction(document.all.lowerLetter,/^[a-z]*$/);
    regInputRestriction(document.all.upperLetter,/^[A-Z]*$/);
    regInputRestriction(document.all.letter,/^[a-zA-Z]*$/);
    regInputRestriction(document.all.numberLetter,/^([0-9a-zA-Z])*$/);
    regInputRestriction(document.all.chinese,/^[\u4E00-\u9FA5]*$/,true);
    regInputRestriction(document.all.twoDigFloat,/^\d*\.?\d{0,2}$/ );
    regInputRestriction(document.all.dateNum,/^\d{1,4}([-\/](\d{1,2}([-\/](\d{1,2})?)?)?)?$/);
    regInputRestriction(document.all.partEn,/^[a-e]*$/);
    regInputRestriction(document.all.notSpecialLetter,/^[^|#]*$/);
    }
    </script>
    <BODY onLoad="initForm()" style="font-size:12px;">
    <INPUT id="onlyNumber"> 只能输入数字<br/><br/>
    <INPUT id="lowerLetter"> 只能是小写字母<br/><br/>
    <INPUT id="upperLetter"> 只能是大写字母<br/><br/>
    <INPUT id="letter"> 只能是字母<br/><br/>
    <INPUT id="numberLetter"> 只能是字母数字<br/><br/>
    <INPUT id="chinese"> 只能是中文(bug:紫光拼音可以输入英文)<br/><br/>
    <INPUT id="twoDigFloat"> 只能是两位小数<br/><br/>
    <INPUT id="dateNum"> 只能是日期型<br/><br/>
    <INPUT id="partEn"> 是部分英文(a-e)<br/><br/>
    <INPUT id="notSpecialLetter"> 不能输入 # 和 |<br/><br/>
    </BODY>
      

  8.   

    但是我的4个textbox在repeater里面的<FooterTemplate>
    <FooterTemplate>
    <tr>
        <td>新增:<asp:TextBox ID="txtIP1" Width="40px" runat="server" MaxLength="3"></asp:TextBox>.
        <asp:TextBox ID="txtIP2"  Width="40px"  runat="server" MaxLength="3"></asp:TextBox>.
        <asp:TextBox ID="txtIP3"  Width="40px"  runat="server" MaxLength="3"></asp:TextBox>.
        <asp:TextBox ID="txtIP4" Width="40px"   runat="server" MaxLength="3"></asp:TextBox></td>
        <td colspan=2></td>
        <td colspan=2>有效期:<asp:TextBox ID="txtDays" Width="70px" runat="server"></asp:TextBox>天</td>
        <td></td></tr>
    <tr><td><asp:Button ID="btnSubmit" runat="server" Text="提交" CommandName="Submit"/></td></tr>
    </table>
    </FooterTemplate>
      

  9.   

    看一下 MaskedTextBox 类,winform 的,asp.net 不行