PDA

View Full Version : ایراد پیش پا افتاده



y_ziaee
شنبه 25 شهریور 1391, 13:06 عصر
سلام دوستان
من امروز به یک مشگل ساده که بخاطر بی توجه ای خودم ایجاد شده بود بر خوردم که بی مورد ندیدم گفتن این اشکال را برای دوستانی که مثل خودم تازه شروع به کار واقعی با سی شارپ کرده اند و احتمالا به آن برخورد کنند.

میدانیم در هر فرمی یک Event داریم بنام FormClosing که با آن میتوان در زمان بستن فرم کنترلهایی را انجام داد و در صورت درستی کار اجازه بستن فرم را داد و در غیر اینصورت جلوی بستن فرم را گرفت، منهم در ابن Event برنامه ام را بفرم زیر نوشته بودم :


private void AccRecipt_FormClosing(object sender, FormClosingEventArgs e)
{
if (CheckReciptSum() != 0)
{
MessageBox.Show("جمع قابل پرداخت با جمع نهایی رسید مبلغ " + CheckReciptSum().ToString() + "ریال مغایرت دارد ");
e.Cancel = true;
}
else
this.Close();


}
و در زمان بسته شدن فرم به پیغام خطای زیر برخورد میکردم


An unhandled exception of type 'System.StackOverflowException' occurred in System.Windows.Forms.dll


و این در اثر تکرار زیاد برنامه و سعی در بستن فرم بوجود میآمد و باعث این اشکال نیز عبارت بعد از else بود که با اصلاح برنامه به فرم زیر برطرف شد.


private void AccRecipt_FormClosing(object sender, FormClosingEventArgs e)
{
if (CheckReciptSum() != 0)
{
MessageBox.Show("جمع قابل پرداخت با جمع نهایی رسید مبلغ " + CheckReciptSum().ToString() + "ریال مغایرت دارد ");
e.Cancel = true;
}
}



امیدوارم این تجربه نا چیز به دردتان بخورد.

باران باش و ببار و نپرس کاسه های خالی از آن کیست