Aracılığıyla paylaş


Kullanıcı girişini doğrulamaya genel bakış (Windows Forms .NET)

Kullanıcılar uygulamanıza veri girdiğinde, uygulamanız kullanmadan önce verilerin geçerli olduğunu doğrulamak isteyebilirsiniz. Belirli metin alanlarının sıfır uzunluklu olmamasını, bir alanın telefon numarası olarak biçimlendirilmesi veya dizenin geçersiz karakterler içermemesi gerekebilir. Windows Forms, uygulamanızdaki girişi doğrulamanız için çeşitli yollar sağlar.

MaskedTextBox Denetimi

Kullanıcıların telefon numarası veya parça numarası gibi iyi tanımlanmış bir biçimde veri girmesini zorunlu kılması gerekiyorsa, denetimi kullanarak MaskedTextBox bunu hızlı ve minimum kodla gerçekleştirebilirsiniz. Maske, metin kutusunda belirli bir konumda hangi karakterlerin girilebileceğini belirten bir maskeleme dilindeki karakterlerden oluşan bir dizedir. Denetim kullanıcıya bir dizi istem görüntüler. Kullanıcı yanlış bir giriş yazıyorsa, örneğin, kullanıcı bir basamak gerektiğinde bir harf yazıyorsa, denetim girişi otomatik olarak reddeder.

tarafından MaskedTextBox kullanılan maskeleme dili esnektir. Gerekli karakterleri, isteğe bağlı karakterleri, kısa çizgi ve parantez gibi değişmez karakterleri, para birimi karakterlerini ve tarih ayırıcılarını belirtmenizi sağlar. Denetim, bir veri kaynağına bağlı olduğunda da iyi çalışır. Veri Format bağlamadaki olay, gelen verileri maskeyle uyumlu olacak şekilde yeniden biçimlendirmek için kullanılabilir ve Parse olay, giden verileri veri alanının belirtimlerine uyacak şekilde yeniden biçimlendirmek için kullanılabilir.

Olay temelli doğrulama

Doğrulama üzerinde tam programlı denetim istiyorsanız veya karmaşık doğrulama denetimlerine ihtiyacınız varsa, çoğu Windows Forms denetiminde yerleşik olarak bulunan doğrulama olaylarını kullanmanız gerekir. Serbest biçimli kullanıcı girişini kabul eden her denetimin, denetim veri doğrulaması gerektirdiğinde gerçekleşecek bir Validating olayı vardır. Olay işleme yönteminde Validating , kullanıcı girişini çeşitli yollarla doğrulayabilirsiniz. Örneğin, posta kodu içermesi gereken bir metin kutunuz varsa doğrulamayı aşağıdaki yollarla yapabilirsiniz:

  • Posta kodunun belirli bir posta kodu grubuna ait olması gerekiyorsa, kullanıcı tarafından girilen verileri doğrulamak için girişte dize karşılaştırması yapabilirsiniz. Örneğin, posta kodunun kümesinde {10001, 10002, 10003}olması gerekiyorsa, verileri doğrulamak için dize karşılaştırması kullanabilirsiniz.

  • Posta kodunun belirli bir formda olması gerekiyorsa, kullanıcının girdiği verileri doğrulamak için normal ifadeleri kullanabilirsiniz. Örneğin, veya #####-####formunu ##### doğrulamak için normal ifadesini ^(\d{5})(-\d{4})?$kullanabilirsiniz. formunu A#A #A#doğrulamak için normal ifadesini [A-Z]\d[A-Z] \d[A-Z]\dkullanabilirsiniz. Normal ifadeler hakkında daha fazla bilgi için bkz . .NET Normal İfadeleri ve Normal İfade Örnekleri.

  • Posta kodunun geçerli bir Birleşik Devletler Posta kodu olması gerekiyorsa, kullanıcının girdiği verileri doğrulamak için posta kodu Web hizmetini çağırabilirsiniz.

Olayı Validating türündeki CancelEventArgsbir nesnesi sağlanır. Denetimin verilerinin geçerli olmadığını belirlerseniz, bu nesnenin Validating Cancel özelliğini olarak ayarlayarak olayı iptal edin true. Özelliğini ayarlamazsanız Cancel , Windows Forms bu denetim için doğrulamanın başarılı olduğunu varsayar ve olayı tetikler Validated .

bir içindeki e-posta adresini doğrulayan bir TextBoxkod örneği için olay başvurusuna Validating bakın.

Olay temelli doğrulama verilerine bağlı denetimler

Denetimlerinizi veritabanı tablosu gibi bir veri kaynağına bağladığınızda doğrulama yararlı olur. Doğrulamayı kullanarak, denetiminizin verilerinin veri kaynağı için gereken biçimi sağladığından ve tırnak işaretleri ve ters eğik çizgi gibi güvenli olmayan özel karakterler içermediğinden emin olabilirsiniz.

Veri bağlamayı kullandığınızda, denetiminizdeki veriler olayın yürütülmesi Validating sırasında veri kaynağıyla eşitlenir. Olayı iptal Validating ederseniz veriler veri kaynağıyla eşitlenmez.

Önemli

Olaydan sonra Validating gerçekleştirilen özel doğrulamanız varsa, bu veri bağlamayı etkilemez. Örneğin, veri bağlamayı iptal etmeye çalışan bir Validated olayda kodunuz varsa, veri bağlama yine de gerçekleşir. Bu durumda, olayda Validated doğrulama gerçekleştirmek için denetimin Binding.DataSourceUpdateMode özelliğini olarak DataSourceUpdateMode.OnValidation DataSourceUpdateMode.Neverdeğiştirin ve doğrulama kodunuza ekleyin your-control.DataBindings["field-name"].WriteValue() .

Örtük ve açık doğrulama

Peki bir denetimin verileri ne zaman doğrulanır? Bu size, geliştiriciye bağlı. Uygulamanızın gereksinimlerine bağlı olarak örtük veya açık doğrulama kullanabilirsiniz.

Örtük doğrulama

Örtük doğrulama yaklaşımı, kullanıcı verileri girerken verileri doğrular. Tuşlara basıldığında veya daha yaygın olarak kullanıcı giriş odağını denetimden kaldırdığı her zaman okuyarak verileri doğrulayın. Bu yaklaşım, kullanıcıya çalışırken veriler hakkında anında geri bildirimde bulunmak istediğinizde kullanışlıdır.

Bir denetim için örtük doğrulama kullanmak istiyorsanız, bu denetimin AutoValidate özelliğini veya EnableAllowFocusChangeolarak EnablePreventFocusChange ayarlamanız gerekir. Olayı iptal Validating ederseniz, denetimin davranışı, öğesine atadığınız değere AutoValidategöre belirlenir. atadıysanız EnablePreventFocusChange, olayı iptal etmek olayın gerçekleşmemasına neden Validated olur. Kullanıcı verileri geçerli bir biçime değiştirene kadar giriş odağı geçerli denetimde kalır. atadıysanızEnableAllowFocusChangeValidated, olayı iptal ettiğinizde olay gerçekleşmez, ancak odak yine de bir sonraki denetime dönüşür.

Disable özelliğine atamak örtük doğrulamayı AutoValidate tamamen engeller. Denetimlerinizi doğrulamak için açık doğrulama kullanmanız gerekir.

Açık doğrulama

Açık doğrulama yaklaşımı verileri bir kerede doğrular. Kaydet düğmesine veya İleri bağlantısına tıklama gibi bir kullanıcı eylemine yanıt olarak verileri doğrulayabilirsiniz. Kullanıcı eylemi gerçekleştiğinde, aşağıdaki yollardan biriyle açık doğrulama tetikleyebilirsiniz:

  • Odağın kaybedildiği son denetimi doğrulamak için çağrısı Validate .
  • Form veya kapsayıcı denetimindeki tüm alt denetimleri doğrulamak için çağrısı ValidateChildren .
  • Denetimlerdeki verileri el ile doğrulamak için özel bir yöntem çağırın.

Denetimler için varsayılan örtük doğrulama davranışı

Farklı Windows Forms denetimleri, özellikleri için farklı varsayılan değerlere AutoValidate sahiptir. Aşağıdaki tabloda en yaygın denetimler ve bunların varsayılanları gösterilmektedir.

Control Varsayılan Doğrulama Davranışı
ContainerControl Inherit
Form EnableAllowFocusChange
PropertyGrid Visual Studio'da kullanıma sunulmayan özellik
ToolStripContainer Visual Studio'da kullanıma sunulmayan özellik
SplitContainer Inherit
UserControl EnableAllowFocusChange

Formu kapatma ve Doğrulamayı geçersiz kılma

Denetim, içerdiği veriler geçersiz olduğundan odağı koruduğunda, üst formu normal yöntemlerden biriyle kapatmak mümkün değildir:

  • Kapat düğmesine tıklayarak.
  • Sistem>Kapat menüsünü seçerek.
  • Yöntemini program aracılığıyla çağırarak Close .

Ancak bazı durumlarda, denetimlerdeki değerlerin geçerli olup olmadığına bakılmaksızın kullanıcının formu kapatmasına izin vermek isteyebilirsiniz. Doğrulamayı geçersiz kılabilir ve formun olayı için bir işleyici oluşturarak geçersiz veri içeren bir formu FormClosing kapatabilirsiniz. olayda özelliğini olarak falseayarlayınCancel. Bu, formu kapanmaya zorlar. Daha fazla bilgi ve örnek için bkz Form.FormClosing. .

Not

Formu bu şekilde kapanmaya zorlarsanız, formun denetimlerindeki henüz kaydedilmemiş tüm veriler kaybolur. Ayrıca, kalıcı formlar kapatıldığında denetimlerin içeriğini doğrulamaz. Odağı bir denetime kilitlemek için denetim doğrulamayı kullanmaya devam edebilirsiniz, ancak formu kapatmayla ilişkili davranış konusunda endişelenmeniz gerekmez.

Ayrıca bkz.