Aracılığıyla paylaş


Kullanıcı girişini doğrulamaya genel bakış

Kullanıcılar uygulamanıza veri girdiğinde, uygulamanız kullanmadan önce verilerin geçerli olduğunu doğrulayabilirsiniz. Belirli metin alanlarının sıfır uzunlukta 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 tetiklenen bir Validating olayı vardır. Olay işleyici kodunda 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 ^(\d{5})(-\d{4})?$ düzenli ifadesini 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 Abd Posta kodu olması gerekiyorsa, kullanıcı tarafından girilen verileri doğrulamak için bir Posta kodu Web hizmeti çağırabilirsiniz.

Validating olayına bir CancelEventArgs türünde nesne sağlanır. Denetimin verilerinin geçerli olmadığını belirlerseniz, bu nesnenin Validating özelliğini Cancel olarak ayarlayarak true olayını iptal edin. Ö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 e-posta adresini doğrulayan bir TextBox kod örneği için, Validating olay referansına 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, kontrolünüzdeki verilerin veri kaynağı tarafından istenilen biçime uygun olduğundan ve güvenli olmayan tırnak işaretleri, ters eğik çizgi gibi ö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. Validating etkinliğini iptal ederseniz, veriler veri kaynağıyla eşitlenmez.

Önemli

Olay Validating gerçekleştirildikten sonra yapılan özel bir 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, Validated olayında doğrulama gerçekleştirmek için, denetimin Binding.DataSourceUpdateMode özelliğini DataSourceUpdateMode.OnValidation'den DataSourceUpdateMode.Never'e değiştirin ve doğrulama kodunuza your-control.DataBindings["field-name"].WriteValue() ekleyin.

Ö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ılırken veya daha yaygın olarak kullanıcı giriş odağını kontrol öğesinden kaldırdığında 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 EnablePreventFocusChangeolarak EnableAllowFocusChange ayarlamanız gerekir. Olayı iptal Validating ederseniz, denetimin davranışı, öğesine atadığınız değere AutoValidategöre belirlenir. EnablePreventFocusChange atadıysanız, olayı iptal etmek Validated olayının gerçekleşmesini engeller. Kullanıcı verileri geçerli bir biçime değiştirene kadar odak mevcut denetimde kalır. Eğer EnableAllowFocusChange atadıysanız, Validated olayını iptal ettiğinizde olay gerçekleşmez, ancak odak yine de bir sonraki denetime geçer.

Disable özelliğine AutoValidate atamak, örtük doğrulamayı tamamen engeller. Denetimlerinizi doğrulamak için açık doğrulamayı kullanın.

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 Validate çağrısını yapın.
  • Form veya kapsayıcı denetimindeki tüm alt denetimleri doğrulamak için ValidateChildren çağırın.
  • 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.

Yönetim 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

Kontrol, 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.
  • Program aracılığıyla Close yöntemini çağırarak.

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. Etkinlikte, Cancel özelliğini false olarak ayarlayın. Bu, formu kapanmaya zorlar. Daha fazla bilgi ve örnek için bkz Form.FormClosing. .

Uyarı

Formu bu şekilde kapanmaya zorlarsanız kaydedilmemiş veriler kaybolur. Ayrıca, modal formlar kapatıldıklarında denetimlerin içeriğini doğrulamazlar. Odağı bir denetime kilitlemek için denetim doğrulamayı kullanmaya devam edebilirsiniz, ancak formu kapatmayla ilişkili davranış konusunda endişelenmeniz gerekmez.

Ayrıca bakınız