PDA

View Full Version : اجرای کد زمانی که رنگ دکمه (botton) تغییر کرد



tahamoqaddam
سه شنبه 08 بهمن 1398, 16:56 عصر
سلام دوستان
من یه برنامه دارم که رنگ دکمه با کلیک یا با برنامه تغییر می کنه من می خوام زمانی که رنگ دکمه تغییر کرد کدی اجرا بشه
مثلا در textBox داریم که TextChanged زمانی که متن کادر تغییر کرد اجرا بشه
من چیزی شبیه به این می خوام
botton1_backColorChange

the king
سه شنبه 08 بهمن 1398, 22:49 عصر
سلام دوستان
من یه برنامه دارم که رنگ دکمه با کلیک یا با برنامه تغییر می کنه من می خوام زمانی که رنگ دکمه تغییر کرد کدی اجرا بشه
مثلا در textBox داریم که TextChanged زمانی که متن کادر تغییر کرد اجرا بشه
من چیزی شبیه به این می خوام
botton1_backColorChange

هست، و دقیقا اسمش همونه که میگید.

private void Form1_Load(object sender, EventArgs e)
{
button1.BackColorChanged += Button1_BackColorChanged;
}

private void Button1_BackColorChanged(object sender, EventArgs e)
{
MessageBox.Show("BackColor changed!");
}

ASHKANLAEI
چهارشنبه 09 بهمن 1398, 12:17 عصر
سلام دوستان
من یه برنامه دارم که رنگ دکمه با کلیک یا با برنامه تغییر می کنه من می خوام زمانی که رنگ دکمه تغییر کرد کدی اجرا بشه
مثلا در textBox داریم که TextChanged زمانی که متن کادر تغییر کرد اجرا بشه
من چیزی شبیه به این می خوام
botton1_backColorChangeواقعا یک بار چیزی که توی ذهنتون اومده رو جستجو یا امتحان نکردید؟ :متعجب::متعجب::متعجب:

tahamoqaddam
چهارشنبه 09 بهمن 1398, 15:20 عصر
سلام خیلی ممنون
اتفاقا خودم حدس زدم و امتحان کردم ولی نشد پیام دادم برم دوباره امتحان کنم

tahamoqaddam
چهارشنبه 09 بهمن 1398, 15:40 عصر
دوست عزیز من اینو نوشتم کار نمی کنه

the king
چهارشنبه 09 بهمن 1398, 18:09 عصر
دوست عزیز من اینو نوشتم کار نمی کنه

کدی که نوشتید رو باید بنویسید تا ایراد در کدتون مشخص بشه، در BackColorChanged که دنبال ایراد نمی گردیم. نمیشه که مشخصه BackColor کار بکنه ولی BackColorChanged کار نکنه.

tahamoqaddam
چهارشنبه 09 بهمن 1398, 19:00 عصر
the king عزیز درست شد فقط یه سوال دارم
button1.BackColorChanged += Button1_BackColorChanged;
در فرم لود چه عملی انجام میده من اینو ننوشته بودم کار نمی کرد ولی الان که نوشتم داره کار می کنه بازم ممنون

the king
چهارشنبه 09 بهمن 1398, 19:41 عصر
the king عزیز درست شد فقط یه سوال دارم
button1.BackColorChanged += Button1_BackColorChanged;
در فرم لود چه عملی انجام میده من اینو ننوشته بودم کار نمی کرد ولی الان که نوشتم داره کار می کنه بازم ممنون
در #C ما رخداد ها رو وصل می کنیم به یک متد، تا هر وقت رخداد اتفاق می افته اون متد اجرا بشه. در برخی جاها ویژوال استدیو کدی که این اتصال رو انجام میده مخفی نگه میداره ولی اگر دنبالش بگردید میبینید که هست.

شما در کد کلاس فرم تون یک متد دارید به اسم Button1_BackColorChanged، که میتونست اسمش هر چیز دیگری هم باشه. لازم نبود در اسمش حتما Button1 یا BackColorChanged بیاد. میتونست اسمش Apple باشه.
این متد به خودی خود هیچ ارتباطی با Button1 و Button1.BackColorChanged نداره، مگر اینکه به اون رخداد BackColorChanged وصل بشه. برای وصل کردن یک متد به یک رخداد، دو راه وجود داره. یک راه اینه در پنجره Properties اون
رخداد رو پیدا کنید و متد مورد نظر رو برای مقدارش مشخص کنید، یا راه دوم اینه که مثل همین کد =+ که من نوشته بودم خودتون دستی با کد نویسی این اتصال رو انجام بدید. در هر دو صورت کد این اتصال نوشته میشه،
ولی ممکنه در جایی نوشته بشه که در حالت عادی نمی بینید، یعنی در کد Designer یک فرم.

واقعیت اینه که حتی وقتی شما موقع طراحی یک فرم روی یک دکمه دوبار کلیک می کنید و متدی مثل button1_Click بصورت خودکار ایجاد میشه و ظاهرا شما کاری برای اتصالش انجام نمیدید، در کد Form1.Designer.cs که ویژوال استدیو کدهاشو خودکار می نویسه
یک سطر کدی شبیه به این هست :

this.button1.Click += new System.EventHandler(this.button1_Click);

که خلاصه تر اش که تفاوتی هم در عملکرد نداره میشه :

this.button1.Click += this.button1_Click;


اگه این سطر وجود نداشت، کلیک کردن روی button1 منجر به اجرا شدن button1_Click نمیشد چون button1_Click فقط یک اسم برای متد ئه، هیچ اطلاعات بیشتری نمیده.