Размещение многомерных массивов чисел в таблицах (Пример выполнения работы), страница 2

Рис. 17 Ошибка при неправильном выборе строки при удалении

Чтобы избегать этих ошибок необходимо установить у таблицы свойство «SelectionMode» (англ. «способ выборки») в значение «FullRowSelect» (англ. «выбор ряда целиком»), как это показано на рисунке 18.

Рис. 18 Установка свойства  «SelectionMode»  в значение «FullRowSelect»

Также для безопасности лучше делать проверку, что количество выбранных рядов больше нуля. Ошибка ведь может выскочить, если, например, кнопкой «Удалить» полностью очистить таблицу от строк, и снова нажать кнопку «Удалить». Код проверки показан на рисунке 19.

Рис. 19 Проверка наличия выделенных рядов

Теперь работают все три кнопки. Но кнопка «Заменить» выполняет не то, что было задумано изначально. Планировалось заполнять ячейки случайными числами от 0 до 10.

Для генерации случайных чисел используется элемент «Random» (англ. «случайный»). Объявим переменную «r», которая будет генерить числа. Переменная «r» объявляется в кнопке «Заменить» перед циклами перебора (рис.20).

Рис. 20 Объявление переменной «r» для генерации чисел

У элемента «Random» имеется встроенный метод «Next», где в скобках указывается диапазон, в котором выбирается случайным образом число. Это число будем подставлять в значение перебираемой в цикле ячейки (рис.21).

Рис. 21 Установка случайного значения в ячейки

Проверим как работает проект. После добавления 10 рядов нажимается кнопка «Заменить» и все ячейки заполняются случайными числами от 0 до 10 (рис.22).

Рис. 22 Заполнение ячеек случайными числами

Модернизируем проект. Сделаем так, что число столбцов и строк пользователь мог выбирать сам, по желанию. Для этого добавим на форму два элемента «NumericUpDown» (рис.23). В первом элементе будут указываться число строк, во втором – число «столбцов».

Рис. 23 Добавление двух элементов «NumericUpDown»

Сначала напишем код добавления строк. Для этого заменим код в кнопке «Добавить». Теперь количество добавленных строк будет не 10, а то значение, которое введено в элемент «numericUpDown1». Причет элемент «numericUpDown1» отображает значении в формате «decimal» (англ. «десятичный»), а нам необходимо целое число «int». Поэтому приведем значение элемента «numericUpDown1» к целому числу и занесем это значение в переменную «а» (которая объявлена как целое число). Код показан на рисунке 24.

Рис. 24 Ввод числа строк из элемента «numericUpDown1»

Можно проверить как работает проект. Добавится то количество, которое указано в элементе «numericUpDown1».

Далее добавим функциональность по добавление количества столбцов, которое укажет пользователь. Для начала необходимо удалить имеющиеся три столбца, которые были добавлены в начале проекта. Для удаления используете кнопку «Remove» в окне редактирования столбцов в меню таблице «Edit Columns…» (рис.25).

Рис. 25 Меню для удаления столбцов

Теперь добавим код для добавления столбцов. Код размещается перед кодом добавления строк (так как столбцы в VisualStudio главнее и первостепенней). Код показан на рисунке 26. Под цифрой 1 объявляем переменную «b», куда помещаем значение из элемента «numericUpDown2». Под цифрой два показан цикл перебора от нуля до значения переменной «b». В каждом шаге цикла будет создаваться новый столбец. Дело в том, что столбцы нельзя просто добавить, как ряды (где указываем, например, число 10 и все). Каждому столбцу необходимо еще дать имя, и заголовок. Для создания имен (а они должны быть все разные) используем переменную «colName», куда будем сшивать текст «Column » и значение «i» (которое в цикле изменяется и не повторяется). Аналогично задаем заголовок столбца в переменной «text». Эти две переменные идут на вход в метод «Add» свойства «Columns», цифра 3.

Рис. 26

Можно запустить проект. Добавится то количество строк, которое указано в элементе «numericUpDown1», и то количество столбцов, которое указано в элементе «numericUpDown2».

Еще модернизируем проект. Добавим кнопку «Расчет» (рис.27), при нажатии которой, все ячейки, числа которых превышают число 7, окрашивались бы в зеленый фон, а сами числа становились бы «жирными» и красного цвета.

Рис. 27

Добавим код в кнопку «Расчет». Суть кода заключается в следующем. Перебираем по очереди все ячейки, и если значение ячейки больше 7, то изменяем цвет и шрифт этой ячейки.

Для начала добавим код перебора ячеек. Этот код можно скопировать из кнопки «Заменить». Скопировать нужно код с двумя циклами «foreach…». Внутрь циклов поместить условие отбора. Сначала значение ячейки приводится к целому числу «int» (заносится в переменную «v»), а затем проверяется условие (больше7). Данный код показан на рисунке 28.

Рис. 28 Код отбора необходимых ячеек

Теперь внутрь условия «if» можно поместить код изменения цвета и шрифта ячейки. Код показан на рисунке 29. Под цифрой 1 объявляется переменная «f», которая является типов «Font» (англ. «шрифт»). На вход переменной «f» помещает шрифт, который есть у нашей таблице по умолчанию, и стиль шрифта «Bold» (англ. «жирный»). Под цифрой 2 в ячейке в свойстве «Style» изменяем цвет шрифта. Делаем его красным. Под цифрой 3 указываем цвет фона ячейки – светло-зеленый.

Рис. 29 Установка цветов и шрифта в ячейке

Запустим и проверим как работает проект. При нажатии кнопки «Расчет» требуемые числа окрашиваются в красный цвет + зеленый фон + жирный шрифт (рис.30).

Рис. 30 Конечный результат проекта