添加短划线' - '在文本框中的evry四字符输入中,用于在Windows Phone 8.1中存储信用卡信息c#

时间:2015-08-18 09:24:34

标签: c# textbox windows-phone-8.1

我正在开发银行申请,我必须存储信用卡信息

  1. 从用户输入卡号
  2. 将在该文本框中添加每四个字符短划线'-'
  3. 例如1234-1234-1234-1234

    我已尝试KeyDownTextChanged,但没有得到答案。 关键事件

    txtcardNumber.Focus(FocusState.Keyboard);
                string temp = string.Empty;
                if (txtcardNumber.Text.Length == 4)
                {
                    temp = txtcardNumber.Text;
    
                    txtcardNumber.Text += '-';
                    txtcardNumber.UpdateLayout();
    
    
    
                }
                else if (txtcardNumber.Text.Length == 9)
                {
                    txtcardNumber.Text = txtcardNumber.Text + "-";
                }
                else if (txtcardNumber.Text.Length == 14)
                {
                    txtcardNumber.Text = txtcardNumber.Text + "-";
                }
    

    当它添加' - '光标自动开始,我不知道为什么

3 个答案:

答案 0 :(得分:2)

您可以将MaskedTextBoxes用于此类方案。你可以按如下方式设置掩码:

mskCardBox.Mask = "0000-0000-0000-0000";

答案 1 :(得分:0)

这可能对你有帮助....

不要等到4位数之后的破折号。 拿一个文本框双击它并写下面的代码并使该文本框autopostback = true。

一次写入所有16位数字并单击制表符或输入,破折号将自动分为4位数。

protected void TextBox1_TextChanged(object sender, EventArgs e)
{
    string cardno = TextBox1.Text;
    var list = Enumerable
        .Range(0, cardno.Length / 4)
        .Select(i => cardno.Substring(i * 4, 4))
        .ToList();
    var resl = string.Join("-", list);
    TextBox1.Text = resl;
}

答案 2 :(得分:0)

我找到了简单的解决方案

               var insertText = "-";
               var selectionIndex = creditcard.SelectionStart;
               creditcard.Text = creditcard.Text.Insert(selectionIndex, insertText);
               creditcard.SelectionStart = selectionIndex + insertText.Length;