/ / C # Windows Application (nie wpf) maskuje numer karty kredytowej w polu tekstowym jako wprowadzony, a następnie walidację i przetwarzanie numeru karty kredytowej - c #, winformy, karta kredytowa, zgodność z Pci

C # Windows aplikacji (nie wpf) maska ​​numer karty kredytowej w polu tekstowym jako wprowadzane, a następnie walidacji i przetwarzania numeru karty kredytowej - c #, winforms, karty kredytowej, PCI-zgodności

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 № 1

Prostym 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.