2013-04-17 29 views
1

我支持接受和處理信用卡的C#Windows應用程序。但由於有新的規則,我需要在輸入信用卡號碼時加以屏蔽。因此,如果第一個數字是4,則在輸入下一個數字(例如9)之前它是可見的,然後文本框顯示* 9。C#Windows應用程序(不是wpf)在輸入文本框中掩蓋信用卡號碼,然後驗證和處理信用卡號碼

我想使用maskedtextbox,但後來的字符都是「*」,但我需要顯示鍵入的最後一個字符。

有沒有這樣做的最佳做法?請記住,我需要這些號碼並在信用卡處理之前運行驗證,然後處理信用卡並將其存儲在數據庫中。我已經在數據庫中加密了CC字段。

任何建議/幫助將不勝感激。

回答

1

簡單的方法是有兩個文本框。一個用戶實際輸入數字,另一個顯示該輸入的屏蔽版本。將蒙面控制放在輸入控件上。

使用TextChangedKeyUp事件來跟蹤更改和更新。

if (textBoxEntry.Text.Length <= 1) 
{ 
    textBoxMasked.Text = textBoxEntry.Text; 
} 
else 
{ 
    string lastChar = textBoxEntry.Text.Substring(textBoxEntry.Text.Length-1, 1); 
    textBoxMasked.Text = lastChar.PadLeft(textBoxEntry.Text.Length, '*'); 
} 

除此之外,你可能有PCI合規性問題。僅將這些值加密到數據庫中是不夠的,您需要密鑰管理策略,密鑰輪換計劃和堆棧。希望你已經知道了這一切,但只是提到它,如果你不知道。