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.
[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; 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]
