PDA

View Full Version : سوال: کار با کنترل های رانتایم



mehran788
شنبه 29 فروردین 1394, 10:27 صبح
سلام . خسته نباشید
من در کد نویسی چند تا پانل به صورت رانتایم به فرمم اضافه می کنم. حالا می خوام هروقت Mouse move شد رنگشون عوض شه.
از کجا بدونم ماوس رو کدوم هست و اسمشون رو از کجا در بیارم؟
ممنون

Javad_raouf
شنبه 29 فروردین 1394, 11:50 صبح
اینجوری:
private void panel_MouseMove(object sender, MouseEventArgs e)
{
((Panel)sender).BackColor = Color.Black;
}

mehran788
شنبه 29 فروردین 1394, 18:37 عصر
خیلی ممنون
حالا واسه برگشت به حالت قبلی چیکار کنم. وقتی که ماوس از روی پانل رد شد باید رنگش به حالت قبل برگرده. خواستم از رویداد mouseleave استفاده کنم ولی چون توی پانل یک progressbar دارم هر وقت روی پروگرس بار میره رویداد mouse leave رو اجرا می کنه.
الان باید وقتیی ماوس روی فرم اومد تمام پانل های رانتایم رو به رنگ پیش فرض برگردونم واسه همین لازمه بدونم چند تا کنترل تا حالا ایجاد کردم و با چه نام هایی ایجاد کردم. آیا کنترل هایی که ایجاد م کنم رو در جایی ثبت کنم و اینجا استفاده کنم یا راه بهتری هم هست؟ ممنون

Javad_raouf
یک شنبه 30 فروردین 1394, 07:16 صبح
وقتی کنترل هات Runtime هست بهترین کار اینه که توی یک آرایه یا لیست نگهشون داری
و وقتی ماوس روی فرمت رفت تمام پنل های اون آرایه رو رنگشو عوض کنی

Naghibi
یک شنبه 30 فروردین 1394, 08:01 صبح
سلام
من برای این کار وقتی کنترل ها رو دارم ایجاد می کنم با یه شمارنده اونا رو تگ گذاری می کنم. یعنی به خاصیت tag اونا یه مقدار میدم. حالا وقتی می خوای کنترل مورد نظر رنگی و بقیه بیرنگ بشن کافیه توی یه حلقه for each همه پنل ها رو پیدا کنی و برای هر کدوم اگه مقدار تگش برابر با sender.tag بود رنگی و در غیراین صورت بیرنگ بشه.