PDA

View Full Version : اجرا نشدن ادامه برنامه در صورت نادرست بودن یک شرط



resident
پنج شنبه 04 بهمن 1386, 23:36 عصر
سلام
میخوام وقتی یه شرطی نادرست بود بقیه برنامه اجرا نشه و همونجا بمونه تا کاربر قادر به تصحیح کردن باشه.
کد زیر کدهای مربوط به چک کردن اطلاعات ورودی توسط کاربر(برای یک attribute است)
میخوام وقتی کد طرح مثلا حاوی کاراکتری غیر از حرف و عدد بود بعد از نمایش پیغام بقیه برنامه اجرا نشه و سراغ چک کردن بقیه attribute ها(به عنوان مثال چک کردن نام طرح) نره،چکار میشه کرد؟



private void save_Click(object sender, EventArgs e)
{
if (string.IsNullOrEmpty(txtcode_tarh.Text))
MessageBox.Show("کد طرح را وارد نمایید");
else
{
pt.code_pishnahade_tarh = txtcode_tarh.Text;
chkname_tarh();
}
}
--------------------------------------------------------------------------
class pishnahade_tarh
{
private string _code_pishnahade_tarh;
private string _name_tarhe_pishnahadi;
check_invalid_input cii = new check_invalid_input();
public string code_pishnahade_tarh
{
get { return _code_pishnahade_tarh; }
set
{
if (cii.chkletter_digit(value))
_code_pishnahade_tarh = value;
else
MessageBox.Show("کد طرح شامل حرف و عدد می باشد");
}
}
--------------------------------------------------------------------
class check_invalid_input
{
public bool chkletter_digit(string str)
{
foreach (char c in str)
{
if (!char.IsLetterOrDigit(c))
return false;
}
return true;
}
}

رضا عربلو
جمعه 05 بهمن 1386, 00:06 صبح
خوب هرگاه در درون یک متد از ادامه اجرا رکورد منصرف می شوید می توانید از return استفاده کنید.

resident
جمعه 05 بهمن 1386, 07:54 صبح
خوب هرگاه در درون یک متد از ادامه اجرا رکورد منصرف می شوید می توانید از return استفاده کنید.
آقای عربلو ممنون از جوابتون. اما این مورد با return درست نمیشه. تو قسمت


if (string.IsNullOrEmpty(txtcode_tarh.Text))
MessageBox.Show("کد طرح را وارد نمایید");
else
{
pt.code_pishnahade_tarh = txtcode_tarh.Text;
chkname_tarh();
}

در صورتی که کاربر کد طرح رو وارد کرده باشه آبجکت pt از متد یک کلاس دیگه برای چک کردن اینکه کاربر کاراکترهای مجاز وارد کرده یا نه استفاده میکنه و در صورتی که کاربر از کاراکترهای غیر مجاز استفاده کرده باشه پیغام بهش میده. حالا مشکل اینجاست.وقتی پیام داده شد من نمیخوام


chkname_tarh();

اجرا بشه، اما میشه

resident
جمعه 05 بهمن 1386, 10:04 صبح
کسی کمک نمی کنه؟!!!!:گریه:

رضا عربلو
جمعه 05 بهمن 1386, 14:02 عصر
شما بایستی در اون متدی از آبجیکت pt که عمل چک کردن را انجام می دهد یک Exception را Throw کنید(این Excpetion را می توانید خودتان درست کنید).
بعد در بلوک کدتان از Try..catch استفاده کنید.

resident
جمعه 05 بهمن 1386, 14:33 عصر
شما بایستی در اون متدی از آبجیکت pt که عمل چک کردن را انجام می دهد یک Exception را Throw کنید(این Excpetion را می توانید خودتان درست کنید).
بعد در بلوک کدتان از Try..catch استفاده کنید.
با try catch هم درست نمیشه.