C# WindowsForm ile TC Kimlik Numarası, İsim, Soyisim, E-Mail Kontrol Yapıları
C# WindowsForm ile TC Kimlik Numarası, İsim, Soyisim, E-Mail Kontrol Yapıları
Daha fazlası için: gorselprogramlama.com
Merhaba ben Abdurrahman ÖNDER. Bu uygulamamızda özel metinlerin kontrolünü nasıl sağlarız ona bakalım. Özel metinlerden kastımız:
- TC Kimlik Numarası
- İsim(Bir ya da birden fazla)
- Soyisim
TC için:
- TC Kimlik numaraları 11 basamaktan oluşmaktadır.
- İlk 9 basamak arasında kurulan bir algoritma bize 10. basmağı, ilk 10 basamak arasında kurulan algoritma ise bize 11. basamağı verir.
- Her hanesi rakamsal değer içerir.
- İlk hane 0 olamaz. 1. 3. 5. 7. ve 9. hanelerin toplamının 7 katından, 2. 4. 6. ve 8. hanelerin toplamı çıkartıldığında, elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 10. haneyi verir.
- İlk 10 hanenin toplamından elde edilen sonucun 10’a bolumunden kalan, yani Mod10’u bize 11. haneyi verir.
AD için:
- İlk karakter boşluk olamaz
- Rakam ya da harf harici karakter içeremez.
- Birkaç isimden oluşabilir onların arasında sadece birer boşluk olmalıdır.
- İsimlerin ilk harfleri büyük olmalı.
SOYAD için:
- İlk karakter boşluk olamaz
- Rakam ya da harf harici karakter içeremez.
- Birkaç isimden oluşamaz.
- Tamamı büyük harflerden oluşmalı.
Mail için:
- Hiçbir yerde boşluk kabul edemez.
- Rakam ya da harf harici karakter içerebilir.
- Sadece bir adet ‘@‘ içerebilir. Bu ne sonda ne de başta olamaz.
Form Ekranımızı şu şekilde tasarlayalım:
Button btnControl;
TextBox txtTc;
TextBox txtAd;
TextBox txtSoyad;
Label label1;
Label label2;
Label label3;
Label label4;
TextBox txtMail;
Label lblEmail;
Label lblSoyad;
Label lblAd;
Label lblTc;
Tasarımımızı ve Component isimlerini yukardaki gibi yapalım. Ardından kodlama kısmına geçelim.
İlk olarak TC kısmımızın özelliklerini yazalım.
private void txtTc_KeyPress(object sender, KeyPressEventArgs e) { e.Handled = !char.IsDigit(e.KeyChar)&& !char.IsControl(e.KeyChar); if (txtTc.Text.Trim().Length == 11 && e.KeyChar != (char)Keys.Back) { e.Handled = true; } } private void txtTc_TextChanged(object sender, EventArgs e) { if (txtTc.Text.Trim().Length == 11) { lblTc.Visible = false; } else { lblTc.Visible = true; } } private void txtTc_Leave(object sender, EventArgs e) { bool tc_State = TcKimlikDogrulama(txtTc.Text.Trim()); if(tc_State) { lblTc.Visible = false; } else { lblTc.Visible = true; } } private bool TcKimlikDogrulama(string pTCKimlik) { if (pTCKimlik.Length &amp;amp;amp;amp;amp;amp;lt; 11) { return false; } else if (pTCKimlik.Substring(0, 1) == "0") { return false; } int toplam1 = Convert.ToInt32(pTCKimlik[0].ToString()) + Convert.ToInt32(pTCKimlik[2].ToString()) + Convert.ToInt32(pTCKimlik[4].ToString()) + Convert.ToInt32(pTCKimlik[6].ToString()) + Convert.ToInt32(pTCKimlik[8].ToString()); int toplam2 = Convert.ToInt32(pTCKimlik[1].ToString()) + Convert.ToInt32(pTCKimlik[3].ToString()) + Convert.ToInt32(pTCKimlik[5].ToString()) + Convert.ToInt32(pTCKimlik[7].ToString()); int sonuc = ((toplam1 * 7) - toplam2) % 10; if (sonuc.ToString() != pTCKimlik[9].ToString()) { return false; } int toplam3 = 0; for (int i = 0; i<; 10; i++) toplam3 += Convert.ToInt32(pTCKimlik[i].ToString()); if ((toplam3 % 10).ToString() != pTCKimlik[10].ToString()) { return false; } return true; }
Ad kısmımızın özelliklerini yazalım.
private void txtAd_KeyPress(object sender, KeyPressEventArgs e) { if (txtAd.Text.Trim() != "") { if (char.IsDigit(e.KeyChar) || char.IsPunctuation(e.KeyChar) || (txtAd.Text[txtAd.Text.Length - 1] == ' ' &amp;amp;amp;amp;amp;amp;&amp;amp;amp;amp;amp;amp; e.KeyChar == ' ')) { e.Handled = true; } } else { if (char.IsDigit(e.KeyChar) || char.IsPunctuation(e.KeyChar) || e.KeyChar == ' ') { e.Handled = true; } } } private void txtAd_Leave(object sender, EventArgs e) { if (txtAd.Text.Trim() != "") { char[] name = txtAd.Text.Trim().ToCharArray(); txtAd.Clear(); for (int i = 0; i <name.Length; i++) { char addCharacter = name[i]; if (i == 0) { addCharacter = Convert.ToChar(name[0].ToString().ToUpper()); } else { if (name[i - 1] == ' ') { addCharacter = Convert.ToChar(name[i].ToString().ToUpper()); } } txtAd.Text += addCharacter.ToString(); } } } private void txtAd_TextChanged(object sender, EventArgs e) { txtAd.Text.Trim(); if (txtAd.Text.Length==3) { lblAd.Visible = true; } else { lblAd.Visible = false; } }
Soyad kısmının özelliklerini yazalım:
private void txtSoyad_KeyPress(object sender, KeyPressEventArgs e) { if (char.IsDigit(e.KeyChar) || char.IsPunctuation(e.KeyChar) || e.KeyChar == ' ') { e.Handled = true; } } private void txtSoyad_TextChanged(object sender, EventArgs e) { txtSoyad.Text.Trim(); if (txtSoyad.Text.Length == 2) { lblSoyad.Visible = true; } else { lblSoyad.Visible = false; } }
Mail kısmının özelliklerini yazalım:
private void txtMail_TextChanged(object sender, EventArgs e) { txtMail.Text.Trim(); if (txtMail.Text.IndexOf("@") != -1) { lblEmail.Visible = false; } else { lblEmail.Visible = true; } } private void txtMail_Leave(object sender, EventArgs e) { if (txtMail.Text.Trim().Length != 0) if (txtMail.Text.Trim().ToString()[txtMail.Text.Trim().Length - 1] == '@') { lblEmail.Visible = true; } } private void txtMail_KeyPress(object sender, KeyPressEventArgs e) { if (e.KeyChar == ' ') { e.Handled = true; } if (txtMail.Text.Trim() != "") { if (txtMail.Text.IndexOf("@") != -1 &&e.KeyChar == '@') { e.Handled = true; } } else { if (e.KeyChar == '@') { e.Handled = true; } } }
Butona Tıklandığında ise kontrol ettirelim:
private void btnKontrol_Click(object sender, EventArgs e) { string message = ""; if (lblAd.Visible) { message += "Ad Kısmında, "; } if (lblSoyad.Visible) { message += "Soyad kısmında, "; } if (lblTc.Visible) { message += "TC kısmında, "; } if (lblEmail.Visible) { message += "Email kısmında, "; } if (message != "") { MessageBox.Show(message + " hata tespit edildi.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand); } else { MessageBox.Show("Hata tespit edilemedi.", "Success", MessageBoxButtons.OK, MessageBoxIcon.Information); } }
Formumuzun Load Olayını da etkinleştirelim:
private void Form1_Load(object sender, EventArgs e) { txtSoyad.CharacterCasing = CharacterCasing.Upper; }