Новичок. Событие на клик. - C#
Формулировка задачи:
Необходимо на каждое событие клика реагировать одним методом.
Т.е. на форме есть 9 кнопок, необходимо чтобы клик каждой кнопки вызывал один и тотже метод. Метод в свою очередь должен знать, какая кнопка его вызвала, что бы реагировать соответственно...
Пишу игру "крестики-нолики", сейчас у меня реализовано так:
Код постоянно повторяется... Можно как нибудь лаконичней это написать ?
Второй вопрос.
Мне необходимо создать массив объектов
Почему здесь я его могу создать:
А здесь нет:
Весь код:
Microsoft Visual Studio 2010.
Game Game = new Game();
private void button1_Click(object sender, EventArgs e)
{
Game.Hod(button1, label2);
}
private void button2_Click(object sender, EventArgs e)
{
Game.Hod(button2, label2);
}
private void button3_Click(object sender, EventArgs e)
{
Game.Hod(button3, label2);
}
private void button4_Click(object sender, EventArgs e)
{
Game.Hod(button4, label2);
}
.................................. Button[] all_but =
{
button1,
button2,
button3,
button4,
button5,
button6,
button7,
button8,
button9
}; public Form1()
{
InitializeComponent();
Button[] all_but =
{
button1,
button2,
button3,
button4,
button5,
button6,
button7,
button8,
button9
};
Game.NewGame(all_but);
} public Form1()
{
InitializeComponent();
}
Button[] all_but =
{
button1,
button2,
button3,
button4,
button5,
button6,
button7,
button8,
button9
};
Game.NewGame(all_but);using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace WindowsFormsApplication1
{
public partial class Form1 : Form
{
Game Game = new Game();
public Form1()
{
InitializeComponent();
Button[] all_but =
{
button1,
button2,
button3,
button4,
button5,
button6,
button7,
button8,
button9
};
Game.NewGame(all_but);
}
private void button1_Click(object sender, EventArgs e)
{
Game.Hod(button1, label2);
}
private void button2_Click(object sender, EventArgs e)
{
Game.Hod(button2, label2);
}
private void button3_Click(object sender, EventArgs e)
{
Game.Hod(button3, label2);
}
private void button4_Click(object sender, EventArgs e)
{
Game.Hod(button4, label2);
}
private void button5_Click(object sender, EventArgs e)
{
Game.Hod(button5, label2);
}
private void button6_Click(object sender, EventArgs e)
{
Game.Hod(button6, label2);
}
private void button7_Click(object sender, EventArgs e)
{
Game.Hod(button7, label2);
}
private void button8_Click(object sender, EventArgs e)
{
Game.Hod(button8, label2);
}
private void button9_Click(object sender, EventArgs e)
{
Game.Hod(button9, label2);
}
private void button10_Click(object sender, EventArgs e)
{
Button[] all_but =
{
button1,
button2,
button3,
button4,
button5,
button6,
button7,
button8,
button9
};
Game.NewGame(all_but);
}
}
public class Game
{
public string icon;
public Game()
{
this.icon = "X";
}
public void NextPlayer()
{
if (icon == "X")
{
icon = "O";
}
else
{
icon = "X";
}
}
public void Hod(Button butt, Label lab)
{
butt.Text = icon;
butt.Enabled = false;
NextPlayer();
lab.Text = "Ходит " + icon;
}
public void NewGame(Button[] mas_b)
{
foreach (Button but in mas_b)
{
but.Text = "";
but.Enabled = true;
}
}
}
}Решение задачи: «Новичок. Событие на клик.»
textual
Листинг программы
var all_but = new List<Button>;
public Form1() { InitializeComponent(); all_but.Add(button1);
...
all_but.Add(button9); Game.NewGame(); }