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

How to insert hyphen "-" after 2 digits automatically in 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 += "-";
}

也许你可以试试这个

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

这样它会计算所有不是 - 的字符并检查它们是否偶数。如果是,请添加“-”。

您可以通过使用正则表达式检查它们是否为数字来使其更具限制性。 ^\d

您尝试过文本框遮罩吗?它在 Winform 控件中可用

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

你能试试这个吗

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

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

你可以这样试试吗,这可能对你有帮助。

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}", "[=10=]-");
            textBox1.Text = newst;
            textBox1.SelectionStart = textBox1.Text.Length;
        }
    }

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