Слайд 2Введение
Довольно часто возникают такие ситуации, когда банально неудобно сидеть и прописывать множество
![Введение Довольно часто возникают такие ситуации, когда банально неудобно сидеть и прописывать](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-1.jpg)
однотипных объектов. Иной раз их проще создать динамически – то есть описать полностью внутри кода без использования конструктора.
Отличным примером программы, для которой подойдет данный способ, являются крестики-нолики. У нас девять однотипных объектов, при нажатии на которые у нас появляется либо крестик, либо нолик соответственно.
Слайд 3Динамическое создание объекта
Динамически можно добавить абсолютно любой объект. Просто выберите тот, который
![Динамическое создание объекта Динамически можно добавить абсолютно любой объект. Просто выберите тот,](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-2.jpg)
вам нужен, и пропишете его добавление в самом начале кода! Всегда используйте сначала ключевое слово public. Обратите внимание, вы можете добавить как один объект, так и целый массив объектов!
Слайд 4Динамическое создание объекта
На предыдущем слайде вы просто сказали, что у вас будет
![Динамическое создание объекта На предыдущем слайде вы просто сказали, что у вас](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-3.jpg)
такой объект, но не создали. Создание объекта всегда помечается словом new и использованием конструктора. Иначе говоря, создание объекта выглядит следующим образом:
Для одного объекта
Для массива объектов (создание производится строго в цикле!!!):
Слайд 5Динамическое создание объектов
Дальше вы можете менять свойства так, как вам то будет
![Динамическое создание объектов Дальше вы можете менять свойства так, как вам то](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-4.jpg)
нужно. После того, как вы сделали все, что вам нужно, вы должны поместить объект на форму!!! Это делается с использованием конструкции следующего вида:
this.Controls.Add(объект);
Например, добавление на форму одного объекта:
Массива объектов (все еще в цикле!!!):
Слайд 6События
Событие – это некоторая функция или процедуры, которая вызывается при каких-то условиях.
![События Событие – это некоторая функция или процедуры, которая вызывается при каких-то](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-5.jpg)
Конструкция для событий выглядит следующим образом:
public тип название_события(object sender, аргумент)
Аргумент может различаться в зависимости от того, для какого объекта и какое событие мы создаем. Например, мы создаем событие, которые будет вызывать по клику, для кнопки. Оно будет выглядеть следующим образом:
Слайд 7События
Просто создать событие – недостаточно. Его нужно связать с нашим объектом. Связь
![События Просто создать событие – недостаточно. Его нужно связать с нашим объектом.](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-6.jpg)
осуществляется также, как и изменение свойств объектов, т.к. через точку. Заметим, что каждая такая связь уникальна и она отличается от объекта к объекту и от события к событию. Например, связь для кнопки для события «клик» будет выглядеть следующим образом:
Слайд 8Задача
Реализовать заполнение полей в игре «крестики-нолики».
![Задача Реализовать заполнение полей в игре «крестики-нолики».](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-7.jpg)
Слайд 9Принцип
Все объекты будут задаваться динамически. Первыми ходят крестики. Динамически нужно будет создать
![Принцип Все объекты будут задаваться динамически. Первыми ходят крестики. Динамически нужно будет](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/905457/slide-8.jpg)
девять кнопок и девять пустых изображений под ними. На эти пустые изображения будут помещаться либо крестик, либо нолик в зависимости от хода.
Кнопки и изображения будут содержаться в двумерном массиве, где индексы будут отвечать за строки и столбцы соответственно.