WinForm中使用MaskedTextBox制作IP地址输入框

本文介绍了如何在Windows应用程序中使用MaskedTextBox控件实现输入IP地址时,当用户按下小数点键(.)时,自动跳转到下一栏。提供了两种代码实现方法,包括遍历MaskedTextBox的属性和使用switch语句进行精确位置切换。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.实现的功能:输入IP地址,形如000.000.000.000的格式,并设置keydown事件,当输入点(.)的时候,自动跳至下一栏。

具体方法:
(1).从工具箱中拖入一个MaskedTextBox,命名为MaskedTextBox_IP。
(2).在Mask属性中,输入:000.000.000.000。
(3).在PromptChar属性中,将_换为空格,如果你喜欢_的话,也可以不用换。
(4).创建KeyDown事件,附以下代码:
代码实现方法1:

private void MaskedTextBox_IP_KeyDown(object sender, KeyEventArgs e)
{
    //说明:Keys.Decimal为.
    if (e.KeyCode == Keys.Decimal)
    {
        int pos = MaskedTextBox_IP.SelectionStart;
        //说明:MaskedTextBox_IP.MaskedTextProvider.Length值为15,包含了点(.)。
        //说明:MaskedTextBox_IP.MaskedTextProvider.EditPositionCount值为12,不包含点(.)
        int max = (MaskedTextBox_IP.MaskedTextProvider.Length - MaskedTextBox_IP.MaskedTextProvider.EditPositionCount);
        int nextField = 0;

        for (int i = 0; i < MaskedTextBox_IP.MaskedTextProvider.Length; i++)
        {
            if (!MaskedTextBox_IP.MaskedTextProvider.IsEditPosition(i) && (pos + max) >= i)
                nextField = i;
        }
        nextField += 1;
        MaskedTextBox_IP.SelectionStart = nextField;

        //说明:只要是点(.)的地方都是false
        for (int i = 0; i < MaskedTextBox_IP.MaskedTextProvider.Length; i++)
        {
            Console.WriteLine(MaskedTextBox_IP.MaskedTextProvider.IsEditPosition(i));
        }
    }
}

代码实现方法2:

private void MaskedTextBox_IP_KeyDown(object sender, KeyEventArgs e)
{
    //说明:Keys.Decimal为.
    if (e.KeyCode == Keys.Decimal)
    {
        switch (MaskedTextBox_IP.SelectionStart)
        {
            case 0:
            case 1:
            case 2:
            case 3:
                MaskedTextBox_IP.SelectionStart = 4;
                break;
            case 4:
            case 5:
            case 6:
            case 7:
                MaskedTextBox_IP.SelectionStart = 8;
                break;
            case 8:
            case 9:
            case 10:
            case 11:
                MaskedTextBox_IP.SelectionStart = 12;
                break;
            default:
                break;
        }
    }
}

(5).在取值的过程中,记得要Replace空格。

string sData = MaskedTextBox_IP.Text.Replace(" ", "");

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值