Obsługuję aplikacje windowsowe C #, któreakceptuje i przetwarza kartę kredytową. Ale ze względu na nowe zasady, muszę zamaskować numer karty kredytowej, ponieważ jest ona wprowadzana. Tak więc, jeśli pierwsza liczba to 4, jest widoczna do następnego wpisania numeru (np. 9), wtedy pole tekstowe pokazuje * 9 .
Myślałem o użyciu maskedtextbox, ale wszystkie znaki są "*", ale muszę pokazać ostatni wpisany znak.
Czy istnieją jakieś najlepsze praktyki, aby to zrobić? pamiętaj, że potrzebuję tych liczb i sprawdzam poprawność przed przetworzeniem karty kredytowej, a następnie przetwarzam kartę kredytową i przechowuję ją w bazie danych. Mam już pole CC w bazie danych zaszyfrowanej.
Wszelkie sugestie / pomoc będą bardzo cenne.
Odpowiedzi:
1 dla odpowiedzi № 1Prostym sposobem byłoby posiadanie dwóch pól tekstowych. Jeden, w którym użytkownik faktycznie wprowadza numer, drugi, który pokazuje zamaskowaną wersję tego wejścia. Umieść zamaskowaną kontrolę nad kontrolką wejścia.
Posługiwać się TextChanged
lub KeyUp
zdarzenia do śledzenia zmian i aktualizacji.
na przykład
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, "*");
}
Poza tym prawdopodobnie masz problemy z PCIspełnienie. Nie wystarczy tylko zaszyfrować te wartości do bazy danych, potrzebne są zasady zarządzania kluczami, schematy rotacji kluczy i stosy więcej, mam nadzieję, że już to wszystko wiesz, ale wystarczy wspomnieć o tym, jeśli nie będziesz tego świadomy.