PDA

View Full Version : رویداد کلیک در باتنی که به صورت ارایه تعریف شده



hosseinghaheri
دوشنبه 30 تیر 1393, 13:50 عصر
سلام ، من یه برنامه نوشتم که تعدادی باتن را که به صورت ارایه تعریف شده اند به فورمم اضافه میکنه! حالا می خوام تو ایونت کلیک هر کدوم از این باتن ها یه کد خاص و متفاوت با بقیه بزارم! چطوری میتونم این کار را بکنم؟ مثلا وقتی روی باتن [1]btn کلیک میکنم ، یه مسیج باکس باز بشه! ولی اگر روی باتن [2]btn کلیک کردم ، برنامه exit بشه!

parvizwpf
دوشنبه 30 تیر 1393, 13:56 عصر
for(int i=0;i<array.count();i++)
{
btn[i].Click += new EventHandler(this.MyButtonHandler);
...

}

void MyButtonHandler(object sender, EventArgs e) {
...
}

اگر کدهای متفاوت هستند برای هر دکمه، باید به تعداد همه دکمه ها کدهای و ایونت های متفاوت بنویسید.

hosseinghaheri
دوشنبه 30 تیر 1393, 14:10 عصر
ممنون !
ولی یه مشکل دیگه هم دارم ، تعداد باتن ها همیشه ثابت نیست و کم و زیاد میشه ، پس دقیقا نمیدونم که باید چندتا MyButtonHandler تعریف کنم!

حالا نمیشه کاری کرد که MyButtonHandler برای همه ی باتن ها یه مسیج شو کنه که فقط متن پیام ها با هم فرق داشته باشه!

hosseinghaheri
دوشنبه 30 تیر 1393, 14:36 عصر
مثلا منظورم اینه
void MyButtonHandler(string a, bject sender, EventArgs e) { MessageBox.Show(a); }
هر چند بهم جواب نداد!
یعنی نمدونم باید به جای کد زیر چی بزارم و چطوری MyButtonHandler را فراخوانی کنم!
btn[i].Click += new EventHandler(MyButtonHandler);

ممنون میشم راهنمایی کنید!

parvizwpf
دوشنبه 30 تیر 1393, 15:12 عصر
تو شمایل یک ایونت نمیتونید آرگومان اضافه کنید میتونید از یک لیست استرینگ به ازای هر نکست برای کسیچ استفاده کنید و اندیس هر تکست دقیقا با اندیس اون باتن یکی باشه . بعد تو هر کدوم بگید اندیس مربوط به همون استرینگ رو نشون بده.

hosseinghaheri
دوشنبه 30 تیر 1393, 20:09 عصر
تو شمایل یک ایونت نمیتونید آرگومان اضافه کنید میتونید از یک لیست استرینگ به ازای هر نکست برای کسیچ استفاده کنید و اندیس هر تکست دقیقا با اندیس اون باتن یکی باشه . بعد تو هر کدوم بگید اندیس مربوط به همون استرینگ رو نشون بده.

اگه میشه این را با یه کد مثال بزنید!
مرسی

parvizwpf
دوشنبه 30 تیر 1393, 21:28 عصر
Button[] buttons = new Button[5];
for (int r = 0; r < 5; r++)
{
buttons[r]=new Button();
buttons[r].Name = "btn" + r;
buttons[r].Text = "btn" + r;
buttons[r].Size = new Size(100, 20);
buttons[r].Location = new Point(r * 200, r + 100);
buttons[r].Click += (o, args) =>
{
Button btn = (Button) o; MessageBox.Show(btn.Text); };

this.Controls.Add(buttons[r]);
}

hosseinghaheri
سه شنبه 31 تیر 1393, 10:53 صبح
واقعا ممنونم

parvizwpf
سه شنبه 31 تیر 1393, 12:56 عصر
خواهش میکنم