PDA

View Full Version : ایجاد یک رویداد بوسیله ی کلاس



RoostaYeBekr
پنج شنبه 26 دی 1387, 15:37 عصر
سلام

این dll که فرستادم ، یک Button در صفحه می سازه.
حال سوال من این است که چطوری می تونیم این قضیه را به برنامه بگوئیم که هر گاه بر روی Button کلیک شد ، مثلا متد m را صدا بزن ؟ در دو حالت زیر :

1- متد m در خود کلاس Class1 قرار داشته باشد.
2- m در برنامه ی اصلی قرار داشته باشد.

با تشکر

RoostaYeBekr
پنج شنبه 26 دی 1387, 15:57 عصر
سلام
:لبخند:
قسمت اول سوالم رو خودم فهمیدم.
این شکلی :

mahdi_farhani
پنج شنبه 26 دی 1387, 17:52 عصر
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

object targetClass = assembly.CreateInstance(className);
targetClass.GetType().GetMethod(methodName).Invoke (targetClass, parameters);

RoostaYeBekr
جمعه 27 دی 1387, 11:53 صبح
System.Reflection.Assembly assembly = System.Reflection.Assembly.GetExecutingAssembly();

object targetClass = assembly.CreateInstance(className);
targetClass.GetType().GetMethod(methodName).Invoke (targetClass, parameters);

سلام و تشکر
قسمت دوم سوال رو هم فهمیدم . چقدر ساده بود . نمی دونم چرا دقت نکردم:

کافیه که در کلاس ، اون متد رو public تعریف کنیم . اینطوری خیلی راحت در برنامه ی اصلی ، این متد شناخته می شود.

مثلا در کلاس بگوئیم:


public void clear_Component()
{
this._Button.Text = "This is empty.";
}

و در برنامه ی اصلی بگوئیم:


protected void Button1_Click(object sender, EventArgs e)
{
My_Upload1.clear_Component();
}

اون طرف چیزایی که تو متد
protected override void CreateChildControls
است رو برداشته و داخل متد سازنده اضافه کنیم.

فقط با توجه به اینی که الان گفتم ، منظور کدهای شما رو متوجه نشدم . البته شاید هم شما ، منظورتون از کدهایی که فرستادید ، چیز دیگری بود . چی بود؟:متفکر:

mahdi_farhani
جمعه 27 دی 1387, 12:28 عصر
با اون سه خط شما میتونید یک متد را داخل یک کلاس دیگه (حتی یک اسمبلی دیگر ) صدا بزنید فقط کافی که اسم کلاس و اسم متد و پارمترها را بهش بدید . حالا فقط شما کافی بود که یک متد برای کلیدتون ایجاد کنید و بعد بهش بگید که چه متدی باید اجرا بشه.

RoostaYeBekr
جمعه 27 دی 1387, 13:31 عصر
با اون سه خط شما میتونید یک متد را داخل یک کلاس دیگه (حتی یک اسمبلی دیگر ) صدا بزنید فقط کافی که اسم کلاس و اسم متد و پارمترها را بهش بدید . حالا فقط شما کافی بود که یک متد برای کلیدتون ایجاد کنید و بعد بهش بگید که چه متدی باید اجرا بشه.
سلام و تشکر
:لبخندساده:
البته من قبل از این که اون پست قبلیم رو بزنم ، این کدهای شما رو تو برنامه خودم امتحان کردم. فقط نمی دونستم که جای اون parameters ، چی باید بذارم.

بعد ببخشید یک سوالی : شما این پست قبلی من رو دیدید ؟ منظورم پاسخ دومی که پیدا کرده بودم. با توجه به اینکه اینقدر ساده این مسئله حل می شه ، باز دلیل استفاده از کدهای شما رو متوجه نشدم. می شه شما خودتون یک مثال کوچک بزنید تا بفهمم منظورتون چیه ؟ آخه احساس می کنم ، منظور هم رو متوجه نشدیم. چون به هر حال کدهای شما هم مفید هست . فقط من نمی فهمم.