PDA

View Full Version : چرا این کد فقط یک بار اجرا میشه ؟



programerinfonet
سه شنبه 09 اردیبهشت 1393, 15:27 عصر
سلام دوستان
مکن با کد زیر پفتم که اگر کاربر کد ملی زا اشتباه وارد کرد خطا بده
این قطعه کد کار می کنه اما فقط یک بار یعنی یک بار میگه که کد وارد شده اشتباهه و بعد از اون دیپه هر چیو قبول می کنه
به نظر شما کجای کدم مشکل داره ؟

Mori Bone
سه شنبه 09 اردیبهشت 1393, 15:32 عصر
کدوم کد؟ اطفا کد رو بذارید

programerinfonet
سه شنبه 09 اردیبهشت 1393, 15:36 عصر
private void TXT_NationalID_TextChanged(object sender, EventArgs e)
{
if (TXT_NationalID.TextLength == 10)
{
for (int i = 0; i < dtshoraka.Rows.Count; i++)
{
if (TXT_NationalID.Text == dtshoraka.Rows[i]["NationalID"].ToString())
{
MessageBox.Show("کد ملی تکراری است");
validatenationalid = false;
}
else if (TXT_NationalID.Text != dtshoraka.Rows[i]["NationalID"].ToString())
{
validatenationalid = true;
}
}

char[] chArray = this.TXT_NationalID.Text.ToCharArray();
int[] numArray = new int[chArray.Length];
for (int i = 0; i < chArray.Length; i++)
{
numArray[i] = (int)char.GetNumericValue(chArray[i]);
}
int num2 = numArray[9];
switch (this.TXT_NationalID.Text)
{
case "0000000000":
case "1111111111":
case "22222222222":
case "33333333333":
case "4444444444":
case "5555555555":
case "6666666666":
case "7777777777":
case "8888888888":
case "9999999999":
MessageBox.Show("کد ملی وارد شده صحیح نمی باشد");
break;
}
int num3 = ((((((((numArray[0] * 10) + (numArray[1] * 9)) + (numArray[2] * 8)) + (numArray[3] * 7)) + (numArray[4] * 6)) + (numArray[5] * 5)) + (numArray[6] * 4)) + (numArray[7] * 3)) + (numArray[8] * 2);
int num4 = num3 - ((num3 / 11) * 11);
if ((((num4 == 0) && (num2 == num4)) || ((num4 == 1) && (num2 == 1))) || ((num4 > 1) && (num2 == Math.Abs((int)(num4 - 11)))))
{
validatenationalid = true;
}
else
{
MessageBox.Show("کد ملی وارد شده صحیح نمی باشد");
validatenationalid = false;
}
}
}

programerinfonet
سه شنبه 09 اردیبهشت 1393, 17:23 عصر
نبود ؟
کسی نیست جواب منو هم بده ؟؟؟؟؟؟؟؟

Mori Bone
سه شنبه 09 اردیبهشت 1393, 17:34 عصر
شما یه Break point بذار اول void بعد اجرا کن با کلید f11 خط به خط اجرا کن ببین کجا از void خارج می شه

javadaskari
سه شنبه 09 اردیبهشت 1393, 18:36 عصر
اصلا این رویدادی که شما استفاده کردی برای این کار صحیح نیست. شما یه متد بنویس که یک مقدار bool برگردونه و کد ملی رو به عنوان پارامتر بگیره، بعد اونو هر جایی خواستی صدا بزن:

public bool checkCodeMeli(string strCodeMeli){//Your code}

ali_habibi1384
سه شنبه 09 اردیبهشت 1393, 19:17 عصر
توی رویداد Validate بذار که وقتی طرف خواست بیاد بیرون از تکست باکس چک بشه