Новичок. Событие на клик. - 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(); }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д