Как создать таблицу в windows forms

Обновлено: 05.07.2024

БлогNot. Visual C++: табличные компоненты и работа с ними

Visual C++: табличные компоненты и работа с ними

Пример 1. Пишем приложение TableEditor1 для редактирования таблицы и сохранения её в формате XML.

На форму добавим компоненту dataGridView1 , а объекты DataTable и DataSet создадим программно.

Для этого опишем глобально в классе формы следующие величины:

На загрузку формы реализуем такой код (обработчик события Load ):

Перед закрытием формы выполним следующий код (обработчик события FormClosing ):

Данные сохраняются в формате XML.

DataSet представляет собой кэш данных, расположенный в оперативной памяти. DataSet состоит из коллекции объектов класса DataTable .

Пример такого кода:

Поэтому следует пользоваться методами объекта DataSet .

Пример 2. Пишем проект TableEditor2 для связанных таблиц.

Компонента DataGrid - решение для показа связанных таблиц в одной компоненте, в DataGridView такой возможности нет. Не все компоненты доступны по умолчанию, в том числе, и DataGrid . Щёлкаем правой кнопкой мыши на панели элементов управления, Выбрать элементы, на вкладке "Компоненты .NET Framework" устанавливаем флажок возле элемента DataGrid пространства имен System.Windows.Forms , нажимаем ОК.

После этого DataGrid можно добавить на форму.

На загрузку формы (обработчик события Load ):

На нажатие кнопки (переключает между родительской и дочерней таблицами):

Пример 3. Делаем всё по-современному - через DataGridView . Подробнее об этом компоненте.

Он представляет собой прямоугольный массив ячеек, который можно рассматривать как коллекцию строк или столбцов.

Rows - коллекция строк, имеет тип DataGridRowCollection

Columns - коллекция столбцов, тип DataGridColumnCollection

Оба свойства индексируются как массивы для доступа к конкретной строке/столбцу, нумерация с нуля.

Cells - коллекция ячеек из объекта DataGridRowCollection , приведём пример доступа к ячейке:

RowCount , ColumnCount - количество строк и столбцов

В несвязанном режиме компонент может отображать любые табличные данные.

Методы для добавления/удаления/редактирования строк относятся к коллекции Rows и имеют типовые имена: Add , Insert , Clear , AddCopy , InsertCopy , Remove , RemoveAt и могут иметь по несколько перегрузок каждая, например, для Add есть версии Add() , Add(КоличествоНовыхСтрок) , Add (DataGridViewRow ^row) , Add (. Object ^object)

Настройка внешнего вида компонента также типовая: такие свойства, как BackColor , Alignment , Font и т.д. находятся в объекте типа DataGridViewCellStyle

Каждая ячейка представлена объектом System::Windows::Forms::DataViewCell , за "личный" внешний вид ячейки отвечает свойство InheritedStyle , вид по умолчанию - DefaultCellStyle

1. По нажатию кнопки перекрасим фон таблицы в розовый цвет:

2. . или только фон выбранной ячейки:

Значения cell_y , cell_x описаны глобально в классе формы:

инициализируются в обработчике её события Load :

и получаются значения в обработчиках событий dataGridView1_KeyUp , dataGridView1_MouseUp (одинаковым кодом):

3. Обработчик события dataGridView1_CellFormatting для выделения текущей ячейки жёлтым фоном:

4. Сделаем в dataGridView1 таблицу со значениями функции. Код по нажатию кнопки:

5. Есть также множество событий, связанных с редактированием ячейки: CellBeginEdit , CellEndEdit , CellParsing , CellValidating , CellValidated и т.д.

Например, по умолчанию наша таблица редактируется. Чтобы разрешить в первом столбце ( Y(X) ) ввод только числовых значений, напишем следующий код, выполняемый по событию CellValueChanged :

Величина lastValue описана в классе формы:

и, по событию CellBeginEdit , сохраняет предыдущее значение, хранимое в ячейке:

Читайте также: