PDA

View Full Version : EventHandler



padari
دوشنبه 29 بهمن 1386, 18:45 عصر
سلام
چطور میشه به event یکی از کومبو باکس هایی که تو فرم 1 ماست در فرم 2 که فرم (child form) است دسترسی داشت یعنی بشه به این eventدر فرم 2 دسترسی داشت
آیا باید از EventHandler استفاده کرد و این که این دستور این کار را میکند ؟
و لطفا بگویید که این دستور چرا اشتباه است.

Form1Instance.comboBox1.SelectedIndexChanged+= newEventHandler comboBox1.SelectedIndexChanged();

رضا عربلو
دوشنبه 29 بهمن 1386, 20:52 عصر
در دستور
Form1Instance.comboBox1.SelectedIndexChanged+= newEventHandler comboBox1.SelectedIndexChanged();

شما یک Delgate از نوع EventHandler ایجاد کرده اید و آنرا به InvocationList اون Delegate دیگر SelectedIndexChanged با کمک += اضافه کرده اید.
ولی هنگام ایجاد اینستنس از Delegate تان بایستی نام یک متد به کانستراکتورس ارسال گردد، مثلا یه همچین چیزی :


new EventHandler comboBox1.SelectedIndexChanged (this.Combobox1_Click)

رضا عربلو
دوشنبه 29 بهمن 1386, 20:55 عصر
در ضمن هنگامی که می نویسی :
Form1Instance.comboBox1.SelectedIndexChanged
و بعدش =+
اگر دو بار کلید Tab را فشار بدهید خود ویپوال استودیو یک متد برای اونت هندلر شما می سازد با یدنه پیش فرضی که یک استثنای MethodNotImplemented را Throw می کند.

padari
دوشنبه 29 بهمن 1386, 21:03 عصر
سلام
اگه بخوام که به اینeventیعنی
SelectedIndexChanged دسترسی داشته باشم تا بتونم کومبو باکس ای که در فرم یک هست رو تو فرم 2 یه تغییراتی بدم بعد وقتی فرم 2 رو میبندم اون تغییرات تو فرم 1 تو کومبو هاش دیده بشه

padari
دوشنبه 29 بهمن 1386, 21:08 عصر
تو کد یادم رفت که اسم Form1Instance.comboBox1.SelectedIndexChanged رو بذارم اما برای فقط کومبو ی اول جواب میده برا کومبوی دوم error می گیره یعنی این کار رو برای دو تا کومبو میخوام بکنم و اینerrorرو میده
Error 1 'predict.Form1.comboBox2_SelectedIndexChanged(obje ct, System.EventArgs)' is inaccessible due to its protection level

padari
دوشنبه 29 بهمن 1386, 21:15 عصر
تو کد یادم رفت که اسم Form1Instance.comboBox1.SelectedIndexChanged رو بذارم اما برای فقط کومبو ی اول جواب میده برا کومبوی دوم error می گیره یعنی این کار رو برای دو تا کومبو میخوام بکنم و اینerrorرو میده
Error 1 'predict.Form1.comboBox2_SelectedIndexChanged(obje ct, System.EventArgs)' is inaccessible due to its protection level

رضا عربلو
دوشنبه 29 بهمن 1386, 21:16 عصر
access modifier این متد
Form1.comboBox2_SelectedIndexChanged(obje ct, System.EventArgs)'
را Public بکن.

padari
دوشنبه 29 بهمن 1386, 23:44 عصر
حالا چطور میشه دستوراتی که میخوام برای selectedindexchenged بذارم رو مشخص کنم یعنی کجا و چطور تعریف کنم

رضا عربلو
سه شنبه 30 بهمن 1386, 17:03 عصر
توس این متد دستوراتت را بگذار :
Form1.comboBox2_SelectedIndexChanged