Новичок. Событие на клик. - C#

Узнай цену своей работы

Формулировка задачи:

Необходимо на каждое событие клика реагировать одним методом. Т.е. на форме есть 9 кнопок, необходимо чтобы клик каждой кнопки вызывал один и тотже метод. Метод в свою очередь должен знать, какая кнопка его вызвала, что бы реагировать соответственно... Пишу игру "крестики-нолики", сейчас у меня реализовано так:
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;
            }
        }        
    }
}
Microsoft Visual Studio 2010.

Решение задачи: «Новичок. Событие на клик.»

textual
Листинг программы
var all_but = new List<Button>; 
public Form1()         {             InitializeComponent();                         all_but.Add(button1);
            ...
            all_but.Add(button9);             Game.NewGame();         }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

11   голосов , оценка 4.727 из 5
Похожие ответы