PDA

View Full Version : سوال: فراخوانی event ها به صورت تو در تو



smaill
جمعه 02 مرداد 1388, 11:34 صبح
با سلام.

من در رویداد RowLeave مربوط به دیتا گرید می خواهم دستور dataGridView1.Rows.RemoveAt(RowIndex); را اجرا کنم اما خطای Operation cannot be performed in this event handler. را می دهد.

می خواستم بپرسم چه طور میشه این دستور رو در این رویداد اجرا کنم.

با تشکر

SMRAH1
جمعه 02 مرداد 1388, 17:03 عصر
سلام

چون با اجرای RemoveAt دو باره باعث فراخوانی دوباره همین رویدادی که درونش هستی می شود،باعث ایجاد یک حلقه بدون پایان از این رویداد خواهی شد.
یک راه حل این اسن که قبل از اجرای RemoveAt ، رویداد RowLeave رو از فهرست رویداد های dataGridView1 حذف کنی و بعد از اجرای دستور دوباره اون رو اضافه کنی.

موفق باشی

smaill
شنبه 03 مرداد 1388, 06:57 صبح
سلام

چون با اجرای RemoveAt دو باره باعث فراخوانی دوباره همین رویدادی که درونش هستی می شود،باعث ایجاد یک حلقه بدون پایان از این رویداد خواهی شد.
یک راه حل این اسن که قبل از اجرای RemoveAt ، رویداد RowLeave رو از فهرست رویداد های dataGridView1 حذف کنی و بعد از اجرای دستور دوباره اون رو اضافه کنی.

موفق باشی

سلام.

چه طور میشه این کار رو انجام داد زمانی که خود RemoveAt نیز داخل این رویداد قرار داره؟

SMRAH1
یک شنبه 04 مرداد 1388, 02:05 صبح
private void dataGridView1_RowLeave(object sender, DataGridViewCellEventArgs e)
{
dataGridView1.RowLeave -= new DataGridViewCellEventHandler(dataGridView1_RowLeav e);
dataGridView1.Rows.RemoveAt(e.RowIndex);
dataGridView1.RowLeave += new DataGridViewCellEventHandler(dataGridView1_RowLeav e);
}

smaill
یک شنبه 04 مرداد 1388, 07:21 صبح
سلام .

ممنومنم که کمکم می کنید ولی من این کد رو هم اجرا کردم که باز هم با پیام Operation cannot be performed in this event handler. مواجه می شم. اگه کمکم کنید متشکر می شم

SMRAH1
یک شنبه 04 مرداد 1388, 14:38 عصر
لطفا کد کامل RowLeave رو بگذار ،شاید مشکل از جای دیگه ای است!!؟؟