我正在开发银行申请,我必须存储信用卡信息
'-'
例如1234-1234-1234-1234
我已尝试KeyDown
和TextChanged
,但没有得到答案。
关键事件
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 + "-";
}
当它添加' - '光标自动开始,我不知道为什么
答案 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;