如何在TextBox中自动插入2位数后的连字符“ - ”?

时间:2015-01-20 05:07:40

标签: c# winforms textbox

我有一个TextBox供用户输入数字。

当用户输入TextBox时,格式应该是这样的

  

01-22-34-40-33

我想插入" - "在TextChanged事件处理程序中的2位数之后。

我这样做但没有工作:

if(txtRandomThirdTypeSales.Text.Length == 2)
{
    txtRandomThirdTypeSales.Text += "-";
}
else if (txtRandomThirdTypeSales.Text.Length == 5)
{
    txtRandomThirdTypeSales.Text += "-";        
}
else if (txtRandomThirdTypeSales.Text.Length == 8)
{
    txtRandomThirdTypeSales.Text += "-";        
}
else if (txtRandomThirdTypeSales.Text.Length == 11)
{
    txtRandomThirdTypeSales.Text += "-";
}

4 个答案:

答案 0 :(得分:3)

请你试试这个,这可能会对你有所帮助。

private void textBox1_KeyDown(object sender, KeyEventArgs e)
    {
        string sVal = textBox1.Text;

        if (!string.IsNullOrEmpty(sVal) && e.KeyCode != Keys.Back)
        {
            sVal = sVal.Replace("-", "");
            string newst = Regex.Replace(sVal, ".{2}", "$0-");
            textBox1.Text = newst;
            textBox1.SelectionStart = textBox1.Text.Length;
        }
    }

如果您需要帮助,请告诉我。

答案 1 :(得分:1)

也许你可以试试这个

if(txtRandomThirdTypeSales.Text.Count(x => x != '-') % 2 == 0)
{
    txtRandomThirdTypeSales.Text += "-";
}

这样它会计算所有不是-的字符,并检查它们是否均匀。如果是,请添加' - '。

您可以通过检查它们是带有正则表达式的数字来限制它。 ^\d

答案 2 :(得分:1)

你能试试吗

if(txtRandomThirdTypeSales.Text.Length % 3 == 2)
{
    txtRandomThirdTypeSales.Text += "-";
}

您还可以添加代码来处理退格键和删除键。

答案 3 :(得分:0)

您是否尝试过TextBox屏蔽?它在Winform控件中可用

以下是您的参考http://msdn.microsoft.com/en-us/library/system.windows.forms.maskedtextbox.aspx