Ватсон Карли
Шрифт:
Теперь есть новый класс, который ведет себя так же, как кнопка, но имеет целое свойство с именем
Фактически мы хотим добавить кнопке функциональность, в частности предоставить ID везде, где создается кнопка, и задать текст по умолчанию для отражения этого ID:
Далее можно перейти к cозданию кнопок
Чтобы создать кнопки, добавим код обработчика для кнопки
Первая часть обработчика задает цикл:
Здесь задано, что высота кнопки равна 25 и у начинается в той же точке, что и вершина
Чтобы создать кнопку, делаем так:
Отметим, как значение
Сложность здесь заключается в определении ширины кнопки. Мы хотим, чтобы она находилась на одинаковом расстоянии между правым краем
Наконец, мы добавляем кнопку в массив элементов управления и перемещаем у вниз в положение следующей кнопки:
В результате будет получено изображение:
Кнопки созданы, но пока они ничего не делают. Для того чтобы они работали, необходимо присоединить обработчики событий.
В .NET существует небольшое различие в способах использования термина делегат. Делегат определяется с помощью ключевого слова
Это выглядит запутанным, потому что вызываемый метод также называется делегатом. В этой статье делегат будет означать определение делегата с помощью ключевого слова
Для присоединения обработчика событий необходимо создать делегируемый метод со следующей сигнатурой:
Здесь важно то, что имя создаваемого метода является полностью произвольным, т.е. метод может иметь любое имя, какое мы захотим использовать. До тех пор пока создается метод, который не имеет возвращаемого значения, но получает
Все обработчики событий в множестве элементов управления