2016-03-28 2 views
-1

maske:Sınır dk ve MaskedTextBox max Uzunluk (karakter girişi) Ben aşağıdaki ölçütleri karşılayan bir şifre almak için bir MaskedTextBox ait <code>Mask</code> özelliğini yapılandırmanız gerekir

  • Asgari 4 alfanümerik karakterler
  • Ben dizeye maskeyi ayarı denedim 15 alfanümerik karakterden

Maksimum "aaaa" ama bu işe yaramadı

+0

Neden uzunluğunu kontrol eden birkaç satır kod yazmıyorsunuz ... – Eser

+0

[MaskedTextBox] (https://msdn.microsoft.com/en- us/library/system.windows.forms.maskedtextbox (v = vs.110) .aspx) maksimum ve minimum boyut özelliklerine sahiptir. Ayrıca bunlar bir şifre için inanılmaz derecede güvensiz boyut sınırlamalarıdır –

+0

@GordonAllocman Bu boyut özellikleri, görünür kutunun grafik boyutları içindir. – LarsTech

cevap

0

Masanın içindeki MSDN (see here) 'a göre, a isteğe bağlı alfasayısal karakterler için kullanılır ve A gerekli alfasayısal karakterler için kullanılır.

Therefor aşağıdaki gibi bir maske sizin için çalışması gerekir:

AAAAaaaaaaaaaaa 

DÜZENLEME:

yüzden çıkıyor kullanıcı yine mümkün olduğu gibi bu, çalışmıyor test ettikten sonra 4 karakterden kısa metinleri girin. Bu yüzden bildiğim tek gerçek çözüm, gerçek doğrulamayı gerçekleştirmek için Validating olayını kullanmaktır.

Validating olayı için böyle bir olay işleyici uygulaması için bir örnek. Ayrıca, kullanıcı herhangi bir değer girmediğinde, kullanıcının metin kutusunda "kilitli" olmasını önlemek için boş bir metin kutusu için ek bir kontrol ekledim.

private void maskedTextBox1_Validating_1(object sender, CancelEventArgs e) { 
    // Stop when empty (avoiding the user getting "locked" in the box) 
    if (maskedTextBox1.Text.Length == 0) return; 

    // Validate text, cancel when not valid and show error to user 
    if (maskedTextBox1.Text.Length < 4 || maskedTextBox1.Text.Length > 15) { 
     e.Cancel = true; 
     MessageBox.Show("Please enter a text of 4 - 15 characters length!"); 
    } 
} 
+0

Çalışıp çalışmadığını görmek için çözümünüzü denemelisiniz. – LarsTech

+0

Maalesef haklı ol @LarsTech Bunu test etmeliydim ... beklendiği gibi çalışmıyor: (Yanıtı buna göre güncelleyeceğim). – bassfader

0

Bu biraz geç, ama buna cevap vermek istiyorum.

Alfasayısal kısıtlamanın isteğe bağlı ve gerekli sayıda basamak girilmesi için AAAaaaaa'yı kullanabilirsiniz. Doğrulamak için MaskCompleted ve/veya MaskFull özelliklerini kontrol edin. MaskCompleted, tüm numaralı karakterlerinin girilip girilmediğini kontrol edecektir ve MaskFull, gerekli ve isteğe bağlı karakterlerinin girilip girilmediğini kontrol edecektir. Uzunluğunu kendiniz kontrol etmeniz gerekmez.

Bu nedenle AAAAaaaaaaaaaaa yapabilir ve MaskCompleted'in true olup olmadığını kontrol edebilirsiniz. Eğer öyleyse, en az 4 karakter girdiler. MaskFull, toplam 15'e girip girmediklerini size söyleyecektir.

İlgili konular