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

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(" ", "");

posted @ 2024-06-15 12:21  QD小天  阅读(368)  评论(0)    收藏  举报