Вывод таблицы вручную в Visual Studio в CLR приложении

Featured image

Как вывести данные в обычной таблице.

📖 Содержание ⬇️

Содержание

Создание болванки приложения

Подготовьте приложение с готовой формой.

Подготовьте приложение с готовой формой. Прочитать об этом можно тут: Сложение двух чисел в Visual Studio 2017 на C++ (CLR приложение) | ↗️, Сложение двух чисел в Visual Studio 2015 на C++ (CLR приложение) | ↗️, Сложение двух чисел в Visual Studio 2010 на C++ (CLR приложение) | ↗️:

Форма приложения

Рисунок 1 — Форма приложения

Размещаем компоненты

Разместите на приложении кнопку:

Кнопка на форме

Рисунок 2 — Кнопка на форме

И размещаем компонент таблицы DataGridView. О компоненте можно почитать тут:

Компонент DataGridView

Рисунок 3 — Компонент DataGridView

Растянул компонент:

Растянутый компонент DataGridView

Рисунок 4 — Растянутый компонент DataGridView

Заполняем таблицу

При клике на кнопку должна добавиться таблица. Для этого дважды кликаем по кнопке и вводим код:

// Очистка строк и столбцов таблицы
dataGridView1->Rows->Clear();
dataGridView1->Columns->Clear();

// Создание столбцов
DataGridViewTextBoxColumn ^firstColumn = gcnew DataGridViewTextBoxColumn();
firstColumn->HeaderText = "№";
firstColumn->Name = "№";
DataGridViewTextBoxColumn ^secondColumn = gcnew DataGridViewTextBoxColumn();
secondColumn->HeaderText = "Имя";
secondColumn->Name = "Имя";
DataGridViewCheckBoxColumn ^thirdColumn = gcnew DataGridViewCheckBoxColumn();
thirdColumn->Name = "Наличие велосипеда";
thirdColumn->HeaderText = "Наличие велосипеда";

// Добавление столбцов
dataGridView1->Columns->Add(firstColumn);
dataGridView1->Columns->Add(secondColumn);
dataGridView1->Columns->Add(thirdColumn);

// Переменные для ячеек и строки таблицы
DataGridViewCell ^firstCell;
DataGridViewCell ^secondCell;
DataGridViewCell ^thirdCell;
DataGridViewRow ^row;

// Создание ячеек для первой строки
firstCell = gcnew DataGridViewTextBoxCell();
secondCell = gcnew DataGridViewTextBoxCell();
thirdCell = gcnew DataGridViewCheckBoxCell();
row = gcnew DataGridViewRow();
firstCell->Value = "1";
secondCell->Value = "Ганс";
thirdCell->Value = true;
row->Cells->AddRange(firstCell, secondCell, thirdCell);
dataGridView1->Rows->Add(row);

// Создание ячеек для второй строки
firstCell = gcnew DataGridViewTextBoxCell();
secondCell = gcnew DataGridViewTextBoxCell();
thirdCell = gcnew DataGridViewCheckBoxCell();
row = gcnew DataGridViewRow();
firstCell->Value = "2";
secondCell->Value = "Тимофей";
thirdCell->Value = false;
row->Cells->AddRange(firstCell, secondCell, thirdCell);
dataGridView1->Rows->Add(row);

// Создание ячеек для третьей строки
firstCell = gcnew DataGridViewTextBoxCell();
secondCell = gcnew DataGridViewTextBoxCell();
thirdCell = gcnew DataGridViewCheckBoxCell();
row = gcnew DataGridViewRow();
firstCell->Value = "3";
secondCell->Value = "Квазимодо";
thirdCell->Value = true;
row->Cells->AddRange(firstCell, secondCell, thirdCell);
dataGridView1->Rows->Add(row);

При запуске приложения и нажатии на кнопку получим следующее:

Запущенное приложение

Рисунок 5 — Запущенное приложение

Таблица после нажатия кнопки

Рисунок 6 — Таблица после нажатия кнопки

Надеюсь, что очевидно, что создание новой строчки таблицы можно запихать в цикл.

Второй способ

Предыдущий вариант не очень эффективный, так как даже при добавлении трех строк видно, как появляются записи: после добавления каждой новой строчки таблица отрисовывается заново. А представьте, что будет, если записей будет куда больше?

Лучше заранее подготовить невидимую таблицу данных DataTable ^table, заполнить ей тем, что нужно. А потом одной строчкой dataGridView1->DataSource = table; отобразить все данные.

Код клика кнопки:

DataTable ^table; // Невидимая таблица данных
DataColumn ^column; // Столбец таблицы
DataRow ^row; // Строка таблицы

// Создаем таблицу данных
table = gcnew DataTable();

// Названия столбцов
String^ nameFirstColumn = "№";
String^ nameSecondColumn = "Имя";
String^ nameThirdColumn = "Наличие велосипеда";

// Создание и добавление столбцов
column = gcnew DataColumn(nameFirstColumn, Int32::typeid);
table->Columns->Add(column);
column = gcnew DataColumn(nameSecondColumn, String::typeid);
table->Columns->Add(column);
column = gcnew DataColumn(nameThirdColumn, Boolean::typeid);
table->Columns->Add(column);

// Заполняем первую строчку таблицы
row = table->NewRow();
row[nameFirstColumn] = 1;
row[nameSecondColumn] = "Ганс";
row[nameThirdColumn] = true;
table->Rows->Add(row);

// Заполняем вторую строчку таблицы
row = table->NewRow();
row[nameFirstColumn] = 2;
row[nameSecondColumn] = "Тимофей";
row[nameThirdColumn] = false;
table->Rows->Add(row);

// Заполняем третью строчку таблицы
row = table->NewRow();
row[nameFirstColumn] = 3;
row[nameSecondColumn] = "Квазимодо";
row[nameThirdColumn] = true;
table->Rows->Add(row);

// Отображаем таблицу в визуальном компоненте
dataGridView1->DataSource = table;

Результат выполнения программы

Рисунок 7 — Результат выполнения программы

Типы колонок для отображения информации можно посмотреть по ссылке.

Второй способ с циклом

Покажем напоследок, как тот же код будет выглядеть с циклом:

DataTable ^table; // Невидимая таблица данных
DataColumn ^column; // Столбец таблицы
DataRow ^row; // Строка таблицы

// Создаем таблицу данных
table = gcnew DataTable();

// Названия столбцов
String^ nameFirstColumn = "№";
String^ nameSecondColumn = "Имя";
String^ nameThirdColumn = "Наличие велосипеда";

// Создание и добавление столбцов
column = gcnew DataColumn(nameFirstColumn, Int32::typeid);
table->Columns->Add(column);
column = gcnew DataColumn(nameSecondColumn, String::typeid);
table->Columns->Add(column);
column = gcnew DataColumn(nameThirdColumn, Boolean::typeid);
table->Columns->Add(column);

for (int i = 0; i < 100; i++) {
  // Заполняем строчку таблицы
  row = table->NewRow();
  row[nameFirstColumn] = i;
  row[nameSecondColumn] = " Имя " + i.ToString();
  row[nameThirdColumn] = i % 2 == 0;
  table->Rows->Add(row);
}

// Отображаем таблицу в визуальном компоненте
dataGridView1->DataSource = table;

Код клика кнопки

Рисунок 8 — Код клика кнопки

Пример большой таблицы

Рисунок 9 — Пример большой таблицы