PDA

View Full Version : فراخوانی یک event در یک event دیگه



ssaeeds
پنج شنبه 15 شهریور 1386, 00:15 صبح
چطوری میشه یه event handler رو توسط یک event handler دیگه صدا کرد ؟
مثلا من میخوام وقتی backcolor مربوط به Panel تغییر کرد ، Button1 ، کلیک شه :



یعنی ، وقتی این اجرا بشه

... private void panel1_BackColorChanged(object sender, EventArgs e)


توش ، این

private void Button1_Click(object sender, EventArgs e)
{



اجرا بشه



خلاصه اینکه ، وقتی backColor عوض میشه ، اتوماتیک انگار Button1 هم کلیک شده

gomnam
پنج شنبه 15 شهریور 1386, 01:16 صبح
چطوری میشه یه event handler رو توسط یک event handler دیگه صدا کرد ؟
مثلا من میخوام وقتی backcolor مربوط به Panel تغییر کرد ، Button1 ، کلیک شه :



یعنی ، وقتی این اجرا بشه

... private void panel1_BackColorChanged(object sender, EventArgs e)


توش ، این

private void Button1_Click(object sender, EventArgs e)
{



اجرا بشه



خلاصه اینکه ، وقتی backColor عوض میشه ، اتوماتیک انگار Button1 هم کلیک شده




کد 1



button1.PerformClick();


کد 2


button1_Click(null, null);



کد اول بیشتر توصیه میشه (البته برای button) و برای بقیه کنترل ها هم کد 2

choobin84
پنج شنبه 15 شهریور 1386, 06:58 صبح
button1_Click(sender,e);

danial82
چهارشنبه 26 دی 1386, 02:21 صبح
کد 1



button1.PerformClick();



من برای متدcomboBox1_SelectedIndexChanged چنین چیزی پیدا نمیکنم باید کار خاصی انجام بدم

Mahdi.Kiani
چهارشنبه 26 دی 1386, 08:04 صبح
من برای متدcomboBox1_SelectedIndexChanged چنین چیزی پیدا نمیکنم باید کار خاصی انجام بدم

ین متد فقط برای button ها موجود می باشد (تا اونجایی که من میدونم)
برای بقیه موارد باید از کد های دیگه استفاده کنید

اَرژنگ
چهارشنبه 26 دی 1386, 14:29 عصر
دلیل استفاده از این روش، یعنی فراخوانی یک event در یک event دیگه از وابستگی به روش اشتباه کد نویسی است. در باتن کلیک و یا هر ایونتی همینطوری کد نمیرزند. یک متد تعریف میکنند و در ایونت اون متد را فراخانی میکنند. اگر از روشهایه تمیز برنامه نویسی استفاده بشه، احتیاجی به این روشهایه ماسمالی فراخوانی یک event در یک event دیگه نمیماند.

ir_programmer
چهارشنبه 26 دی 1386, 16:27 عصر
دلیل استفاده از این روش، یعنی فراخوانی یک event در یک event دیگه از وابستگی به روش اشتباه کد نویسی است. در باتن کلیک و یا هر ایونتی همینطوری کد نمیرزند. یک متد تعریف میکنند و در ایونت اون متد را فراخانی میکنند. اگر از روشهایه تمیز برنامه نویسی استفاده بشه، احتیاجی به این روشهایه ماسمالی فراخوانی یک event در یک event دیگه نمیماند.

این یک اصل نیست.
بعضی وقتها حرف شما رو نمی شه درست دونست.

Mahdi.Kiani
چهارشنبه 26 دی 1386, 18:27 عصر
این یک اصل نیست.
بعضی وقتها حرف شما رو نمی شه درست دونست.

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

اما از طرفی فراخوانی یک رویداد به طور دستی و یا توسط متد performclick (برای کنترل هایی که ....) هیچ تناقضی با روش درست برنامه نویسی و .. نداره (نمونش فراخوانی رویداد کلیک مربوط به acceptButton و CancelButton است . چطوری انجام میشه؟)

یا استفاده از متد invalidate که میدونین کارش چیه