Как создать таблицу в 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 , сохраняет предыдущее значение, хранимое в ячейке:
Читайте также: