PDA

View Full Version : سوال: تعریف رویداد کلیک برای ماتریسی از دکمه ها



lordvandad
یک شنبه 04 تیر 1391, 14:03 عصر
سلام دوستان...
یک سوال مهم و نسبتا فوری داشتم که امیدوارم جوابش رو کسی داشته باشه...
فرض کنیم که من با استفاده از کدهای زیر یک ماتریس 25 در 25 از دکمه ها درست کرده باشم:


Button[,] buttons = new Button[26,26];
for (int i = 1; i <= 25; i++)
{
for (int j = 1; j <= 25; j++)
{
buttons[i,j] = new Button();
buttons[i,j].Location = new Point(buttons[i,j].Location.X + j * 35 , buttons[i,j].Location.Y + i * 28);
buttons[i,j].Name = "buttons" + i;
buttons[i, j].Size = new Size(35, 28);
buttons[i, j].BackColor = Color.White;
this.Controls.Add(buttons[i,j]);
}
}




حالا مشکل اینه که من چه طوری می تونم برای این دکمه ها رویداد کلیک و به خصوص رویداد mouse move تعریف کنم؟
یعنی اینکه مثلا توی برنامه بتونم مشخص کنم که اگه روی دکمه شماره i,j کلیک شد یا موس روی این دکمه رفت فلان کار انجام بشه!
از کد زیر استفاده کردم که البته برای یک دونه دکمه هستش و اینکه در هر صورت هم کار نکرد:


b.Click += new EventHandler(b_Click);



تو رو خدا اگه کسی می دونه یه کمک بکنه که عجله ای هستش... :لبخند:

lordvandad
یک شنبه 04 تیر 1391, 17:10 عصر
یعنی هیشکی هیچی نمی دونست؟!!!!!!! :متعجب::ناراحت:
راستی اینم بگم که اون عددهای توی کدها و ضربدر i و این حرفا, به خاطر موقعیت برنامه هستن و چیز خاصی نیستنا... :لبخند:

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 20:24 عصر
چرا آرایه 26 در 26 تعریف کردید ولی شمارنده ها از 1 تا 25 هستند(آرایه رو 25در25 و شمارنده ها رو از 0 تا24 تعریف کنید)
private void button7_Click(object sender, EventArgs e)
{
Button[,] buttons = new Button[25, 25];
for (int i = 0; i <= 24; i++)
{
for (int j = 0; j <= 24; j++)
{
buttons[i, j] = new Button();
buttons[i, j].Click += new EventHandler(Form1_Click);
buttons[i, j].MouseMove += new MouseEventHandler(Form1_MouseMove);
buttons[i, j].MouseLeave += new EventHandler(Form1_MouseLeave);
buttons[i, j].Location = new Point(buttons[i, j].Location.X + j * 35, buttons[i, j].Location.Y + i * 28);
buttons[i, j].Name = "button" + (((i) * 25) + j+1);
buttons[i, j].Size = new Size(35, 28);
buttons[i, j].BackColor = Color.White;
this.Controls.Add(buttons[i, j]);
}
}
}

void Form1_MouseMove(object sender, MouseEventArgs e)
{
((Button)sender).BackColor = Color.Yellow;
}

void Form1_MouseLeave(object sender, EventArgs e)
{
((Button)sender).BackColor = Color.White;
}

void Form1_Click(object sender, EventArgs e)
{
//MessageBox.Show(((Button)sender).Name);

//for example
if (((Button)sender).Name == "button5")
MessageBox.Show("button5 is clicked");
}

lordvandad
یک شنبه 04 تیر 1391, 20:59 عصر
چرا آرایه 26 در 26 تعریف کردید ولی شمارنده ها از 1 تا 25 هستند...


خیلی ممنون از جوابتون... دیگه داشتم نا امید می شدم! :لبخند:
در مورد نوع تعریف کردن تعداد باید بگم که بله متوجه هستم که فرمت اصولی برای تعریف ماتریس به چه صورتی هستش, ولی این رو گفتم دیگه, به خاطر برنامه مجبور بودیم که اینجوری تعریفش کنیم...
در کل خیلی خیلی ممنون از جوابتون... کارم تا 60% جلو افتاد... :لبخندساده:

Mahmoud.Afrad
یک شنبه 04 تیر 1391, 23:03 عصر
در مورد نوع تعریف کردن تعداد باید بگم که بله متوجه هستم که فرمت اصولی برای تعریف ماتریس به چه صورتی هستش, ولی این رو گفتم دیگه, به خاطر برنامه مجبور بودیم که اینجوری تعریفش کنیم...
شما باید درنظر داشته باشی وقتی 26*26 تعریف میکنید یعنی 26سطر و 26ستون حالا اگر شمارنده از 1 تا 25 باشه یعنی عملا سطر اول و ستون اول بلااستفاده میمونه. برای استفاده از شمارنده ها در جای دیگه میتونید یکی بهش اضافه کنید تا تبدیل به 1تا25 بشه.