PDA

View Full Version : یک رویداد برای چند شی



mousa1992
چهارشنبه 21 تیر 1391, 21:06 عصر
Panel[] panel;
Button[] button;

private void Form1_Load(object sender, EventArgs e)
{
panel = new Panel[10];
button = new Button[10];
for (int i = 0; i < 10; i++)
{
//**************
panel[i] = new Panel();
panel[i].Dock = DockStyle.Top;
panel[i].Height = this.Height / 10;
this.Controls.Add(panel[i]);
//**************
button[i] = new Button();
button[i].Location = new Point(this.Width / 2 - button[i].Width / 2, 0);
panel[i].Controls.Add(button[i]);
//**************
this.button[i].Click += new System.EventHandler(this.button_click);
}
this.Height = panel[0].Height * 11;
}

private void button_click(object sender, EventArgs e)
{
//code
}


سلام دوستان
کنترل هایی رو هنگام اجرا ایجاد کرد و رویداد کلیک موس رو به همه ی اونا اختصاص دادم
میخوام بدونم چطوری میتونم اندیس حلقه رو به رویداد کلیک ارسال کنم ؟ میخوام فقط همین یک رویداد رو نوشته باشم و همه ی باتن ها از همین استفاده کنن و هرکدام اندیس خود را به رویداد ارسال کرده و با استفاده از اندیس تفhوت ها را ایجاد کنم
متشکرم

یه سوال دیگه این متد کارش چیه ؟

SuspendLayout()

متشکرم

Mahmoud.Afrad
چهارشنبه 21 تیر 1391, 21:31 عصر
برای چی میخواهید از i استفاده کنید؟
در رویداد sender همون کنترلی هست که رویدادش فراخوانی شده. مثلا برای باتن میتونید به اینصورت به تکست دسترسی داشته باشید
((Button)sender).Text

the king
چهارشنبه 21 تیر 1391, 22:27 عصر
یه سوال دیگه این متد کارش چیه ؟

SuspendLayout()

متشکرم

وقتی ابعاد کنترلی رو عوض می کنید، جابجایش می کنید یا داخل کنترل دیگری منتقل اش می کنید، Dock اش می کنید و ... مشخصات Layout ئه که تغییر می کنه و
کنترل با تغییر هر کدوم از اینها باید خودش و محتویاتش رو مجددا با محیط پیرامون تطبیق بده و مجددا در فرم رسم بشه و در واقع یک عالمه کد پشت پرده اجرا میشه.
موقعی که شما چندین عملی که Layout رو تغییر می دهند رو پشت سر هم انجام می دهید، بهتره که تا زمانی که آخرین تغییر رو نداده اید کنترل دست
به پردازش نزنه و تا پایان تنظیمات صبر کنه، اینجوری سرعت اجرا بیشتر میشه و بار پردازش مشخصات Layout کم میشه.
SuspendLayout() سیستم پردازش Layout کنترل رو موقتا غیر فعال می کنه و تا زمانی که از ResumeLayout رو اجرا نکنید صبر می کنه. در فاصله بین این دو تا
فرمان معمولا چندین فرمان که Layout کنترل رو تغییر می دهند نوشته میشه.