PDA

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



antisocial
پنج شنبه 13 فروردین 1388, 22:31 عصر
با سلام
من میخواستم بدونم که چطور میشه یک رویداد رو به طور دستی اجرا کرد؟
فرض کنید ما روی یک فرم یه پیکچرباکس داریم و بالا تر از اون در یک جای دیگه از فرم یه دکمه داریم
حالا من میخوام وقتی اشاره گر ماوس روی پیکچر باکس میره یعنی هنگامی که رویداد اینتر یا ماوس موو پیکچرباکس اجرا میشه رویداد
اینتر اون دکمه ی بالایی اجرا بشه یعنی دکمه به شکل برجسته در بیاد
آیا همچین کاری شدنیه؟
اگر کمکم کنین ازتون ممنون میشم

rnm123
پنج شنبه 13 فروردین 1388, 23:07 عصر
دوست عزیز اگر بخواهی رویداد اینتر مربوط به دکمه را توسط کنترل دیگر مثلا پیکچرباکی فراخوانی کنی کافی است اول در حالت طراحی دکمه را انتخاب کنی بعد در پنجره properties در بالای آن یک دکمه کوچک است که عکسی شبیه علامتی که روی جعبه های برق میکشند دارد و وقتی موس را روی آن بگیری عبارت events ظاهر میشود آنرا بزنی مجموعه رویداد های قابل تعریف برای آن کنترل نمایش داده میشود کافی است در این پنچره رویداد اینتر را انتخاب کنی و با زدن علامی فلش کنار آن رویداد اینتر دکمه را از لیستی که ظاهر میشود انتخاب کنی.

hamid_200611
جمعه 14 فروردین 1388, 10:39 صبح
سلام دوست من روش کار مربوط با Delegate هستش به این صورت توی هر تابع یا رویداد وقتی میخواهی رویداد دیگرو که مربوط به یه کنترل هست اجرا کنی کد زیرو می نویسی:
[ControlName].[EventName] +=
ControlName:اسم اون کنترل
EventName:اسم رویداد مورد نظر
وقتی این کدو نوشتی دوبار پشت سر هم کلیدTab کیبورد رو بزن حالا ویژوال به طور خودکار برات یه تابع ایجاد می کنه که این تابع همان رویدادی هست که Raise شدن آن باعث اجرای دستورات می شه فقط کافی کدهای مربوط به رویداد رو اونجا بنویسی.

مثلا من دو تا دکمه دارم می خوام وقتی دکمه اول کلیک می شه دکمه دوم هم کلیک بشه:
private void button1_Click(object sender, EventArgs e)
{
button2.Click += new EventHandler(button2_Click);
}

void button2_Click(object sender, EventArgs e)
{
throw new NotImplementedException();
}

antisocial
جمعه 14 فروردین 1388, 14:58 عصر
خیلی ممنون.ازینکه راهنماییم کردین
اما متاصفانه این کد کار نکرد.
من قبلا با دلگیت هم کار کردم اما باز هم جواب نداده
به هر حال ممنون.

مهدی رحیم زاده
جمعه 14 فروردین 1388, 16:11 عصر
اینو امتحان کن :
توی جایی که می خوای Event دوم اجرا بشه بنویسش . یعنی مثلا وقتی میخوای روی دکمه اول کلیک کردی ، کلیک دکمه دوم هم اجرا بشه . پس اینو توی کلیک دکمه اول بنویس:


.
.
.
button2_click(button2,e);
موفق باشید

antisocial
جمعه 14 فروردین 1388, 16:33 عصر
یک دنیا متشکر.خیلی لطف کردین.این یکی کار کرد:قهقهه:

AmirAlimadadi
سه شنبه 25 فروردین 1388, 10:44 صبح
با سلام و ممنون از شما
این کدی که شما نوشتین تقریبا درست بود یعنی اینکه باید از متد invoke در اون button استفاده کنی، به این شکل
button1.Invoke(new EventHandler(button2_Click));
اما سوال من اینه که اگه بخواهیم که این کار به صورت دینامیک انجام بگیره باید چی کار بکنیم، یعنی اینکه مثلا از آرایه استفاده بکنیم.
توضیح بیشتر اینکه ما یه آرایه از button ها داریم، حالا می خواهیم از کاربر یه عدد بگیریم (در یه textbox)، و توی یه click event یه button جداگانه، چک کنیم که این عدد وارد شده با ایندکس کدام button برابر است، و رویداد click اون button رو اجرا کنیم، اما مشکل اینجاست که حتما باید نام button مربوطه رو بنویسیم، چون با آرایه کار نمی کنه