masktextbox IP控件

ip控件

添加事件

            maskedTextBox1.KeyPress += MaskedTextBox_KeyPress;
            maskedTextBox2.KeyPress += MaskedTextBox_KeyPress;
            maskedTextBox3.KeyPress += MaskedTextBox_KeyPress;
             private void MaskedTextBox_KeyPress(object sender, KeyPressEventArgs e)
        {
            MaskedTextBox texBox = sender as MaskedTextBox;
            int ret = SetValidData(texBox, texBox.SelectionStart, e.KeyChar);
            texBox.SelectionStart = ret;
        }

设置光标位置函数

private int SetValidData(MaskedTextBox textBox,int start,char input)
        {
            try
            {
                string text = textBox.Text.PadRight(15),ipText = text;
                if (input >= '0' && input <= '9')
                {
                    //ipText = ipText.Remove(start - 1);
                    ipText = ipText.Insert(start, input.ToString());
                }
                int index = start / 4, ipPiece = 0;
                string[] ip = ipText.Split(new char[] { '.' });
                int.TryParse(ip[index],out ipPiece);
                if (ipPiece < 0 || ipPiece > 255) return (index + 1) * 4;
                if (ip[index].Trim().Length>0&&ipPiece==0) return (index + 1) * 4;
                if (ip[index].Trim().Length <= 3&& start%4>2)
                {
                    ip[index] = text.Split(new char[] { '.' })[index].Remove(0,1).PadRight(3);
                    textBox.Text = string.Join(".", ip);
                    start -= 1;
                }
                if (input == '.') start = (index+1)*4;
                return start;
            }
            catch (Exception) { return start; }
        }

ip赋值使用,SetData函数赋值

private void SetData(MaskedTextBox textBox, string ipData)
        {
            int iStartIndex = 0;
            ipData.ToList().ForEach(o => {
                int ret = SetValidData(textBox, iStartIndex, o);
                textBox.Text = textBox.Text.Insert(ret, o.ToString());
                iStartIndex = (iStartIndex == ret ? iStartIndex+1 : ret);
            });
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

怪力左手

囧rz

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值