Maskedtextbox应接受各种数字版本

时间:2014-08-01 13:05:40

标签: c# textbox maskedtextbox

我需要一个Maskedtextbox / Textbox,它接受的版本就像:Exaple:X.X.X.X或X.X.X.XX或X.XX.X.X等等(X =一个数字)

是否有可能我不能说字母/符号输入,它必须有4个点,并且它不能为空。 (可能我需要一个Manskedtextbox的文本框)

我在Mask - >下设置了Maskedtextbox的掩码。面具

当前面具= 9.9.9.9 目前我的Maskedtextbox只接受X.X.X.X

请纠正我:) 我学习,所以每一个建设性的批评都是受欢迎的。)

1 个答案:

答案 0 :(得分:1)

你可以做这样的事情或使用RegEx我确定

private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
    bool handled = false;
    //test if digit
    if (char.IsDigit(e.KeyChar))
    {
        //only allow 2 digits
        //test if length is long enough to contain a prior char
        if (textBox1.Text.Length - 1 >= 0)
        {
            //test if prior char is digit
            if (char.IsDigit(textBox1.Text[textBox1.Text.Length -1]))
            {
                //test if length is long enough to have 2nd prior char
                if (textBox1.Text.Length -2 >= 0)
                {
                    //test 2 prior char if it's a digit because you
                    //only want to allow 2 not 3
                    if (char.IsDigit(textBox1.Text[textBox1.Text.Length - 2]))
                    {
                        handled = true;
                    }
                }
            }
        }
    }
    //test if decimal
    else if (e.KeyChar.Equals('.'))
    {
        //only allow 4 decimals
        if (textBox1.Text.Count(t => t.Equals('.')).Equals(3))
        {
            handled = true;
        }
        else
        {
            //don't allow multiple decimals next to each other
            //test if we have prior char
            if (textBox1.Text.Length - 1 >= 0)
            {
                //test if prior char is decimal
                if (textBox1.Text[textBox1.Text.Length - 1].Equals('.'))
                {
                    handled = true;
                }
            }
        }
    }
    else
    {
        handled = true;
    }
    e.Handled = handled;
}

连接设计师的活动......

enter image description here