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
  • E-Mail

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:

IMG_20200204_223101

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.

[code language=”csharp”]
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 < 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;
}
[/code]

Ad kısmımızın özelliklerini yazalım.

[code language=”csharp”]
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;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;
}
}
[/code]

Soyad kısmının özelliklerini yazalım:

[code language=”csharp”]
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;
}
}
[/code]

 

Mail kısmının özelliklerini yazalım:

[code language=”csharp”]
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;
}
}
}
[/code]

Butona Tıklandığında ise kontrol ettirelim:

[code language=”csharp”]
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);
}
}
[/code]

Formumuzun Load Olayını da etkinleştirelim:

[code language=”csharp”]

private void Form1_Load(object sender, EventArgs e)
{
txtSoyad.CharacterCasing = CharacterCasing.Upper;
}

[/code]

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir