515.94K
Категория: ПрограммированиеПрограммирование

Компоненты отображения табличных данных

1.

БПОУ ОО Сибирский профессиональный колледж
Компоненты отображения
табличных данных
Элемент управления DataGridView
Преподаватель: Тыщенко Е.А.

2.

З 5 Объектно-ориентированную модель
программирования, основные принципы объектноориентированного программирования на примере
алгоритмического языка: понятие классов и объектов,
их свойств и методов, инкапсуляция и полиморфизма,
наследования и переопределения

3.

Содержание
1. Что такое DataGridView и зачем его использовать?
2. Как добавить DataGridView на форму в C#
3. Основные операции с DataGridView в C#
4. Обращение к ячейкам DataGridView с использованием C#
5. Примеры использования DataGridView с C#

4.

Табличное представление данных повсеместно используется в
приложениях.
Данные можно отобразить на форме разными способами: с помощью
списков, текстовых полей, таблиц и др.
Наиболее наглядным способом представления данных является
табличный с помощью элемента управления DataGridView.
Рассмотрим элемент управления DataGridView и основные приёмы
работы с ним.

5.

DataGridView — это мощный и гибкий инструмент для работы с
данными в Windows Forms.
Он предоставляет удобный способ отображения и
редактирования информации в виде таблицы, а также позволяет
проводить различные операции с данными, такие как сортировка,
фильтрация и поиск.
dataGridView – это элемент управления, который может
отображать буквально любой вид данных в ячейках
прямоугольной сетки.

6.

Главное назначение dataGridView – связывание с таблицами
внешних источников данных, прежде всего с таблицами баз
данных.
Мы же сейчас рассмотрим другое его применение – в
интерфейсе, позволяющем пользователю вводить и
отображать матрицы – двумерные массивы.

7.

Объявление одномерных массивов
int[ ] intArr;
Объявление ссылки
double[ ] arr;
int[] intArr = { 1, 3, -8, 19, 0, 11 };
Описание с
инициализацией
double[] arr = { 3.14, 0.0, 0.5 };
int[] intArr; // ссылка
intArr= new int[5]; // выделение памяти
for (int i = 0; i < 5; i++)
{
intArr[i] = i* i-1;
}
Описание и последующая
инициализация

8.

Объявление двумерных массивов
int[,] matrix1;
double[,] matrix2;
int[,] matrix = {{1,2},{3,4}};
int n = 0, m=0;
int n=Convert.ToInt32(textBox1.Text);
int m = Convert.ToInt32(textBox2.Text);
int[,] a=new int[n,m];
//заполнение
8
Объявление ссылки
Описание с
инициализацией
Описание и последующая
инициализация

9.

Как добавить DataGridView на форму в
C#

10.

Для добавления DataGridView на форму в C#, следуйте
инструкциям:
1. Откройте проект в Visual Studio и откройте форму, на которую вы хотите
добавить DataGridView.
2. Перетащите DataGridView из панели элементов на форму.
3. Настройте свойства DataGridView по вашему усмотрению.
4. Настройте источник данных для DataGridView. Можете использовать
различные источники данных, такие как массивы, списки, коллекции или
базы данных.
5. Конфигурируйте столбцы таблицы, устанавливая их свойства. Например, вы
можете добавить столбцы вручную через свойство Columns, устанавливать
ширину и заголовок столбца, указывать тип данных и т. д.

11.

Основные операции с DataGridView в
C#

12.

1. Заполнение DataGridView данными:
• Импорт данных из источника данных, такого как база данных или файл.
• Добавление данных вручную программно.
2. Отображение данных в DataGridView:
• Установка свойств отображения для каждого столбца таблицы.
• Применение форматирования для отображения данных в определенном виде.
3. Редактирование данных в DataGridView:
• Разрешение редактирования ячеек.
• Установка ограничений на вводимые данные.
• Отслеживание и обработка событий редактирования данных.
4. Сортировка и фильтрация данных в DataGridView:
• Создание пользовательских фильтров для отображения определенных данных.
• Сортировка данных по одному или нескольким столбцам.
5. Удаление данных из DataGridView:
• Удаление строк или столбцов таблицы.
• Очистка всех данных из таблицы.
6. Обработка событий в DataGridView:
• Отслеживание изменений данных.
• Обработка щелчков мыши и других событий пользовательского ввода.

13.

DataGridView - представляет собой таблицу для редактирования данных
При размещении на форме он сначала выглядит так:
Если окна DataGridView Tasks нет, то отобразить его можно щелкнув мышкой
по стрелке на верхней границе компонента.

14.

DataGridView - представляет собой прямоугольный массив ячеек, который
можно рассматривать как коллекцию строк или столбцов.
Rows - коллекция строк, - имеет тип DataGridRowCollection
Columns - коллекция столбцов, - тип DataGridColumnCollection
Оба свойства индексируются как массивы для доступа к конкретной
строке/столбцу, нумерация с нуля.
Cells - коллекция ячеек

15.

Добавление столбцов в таблицу
Добавить столбец в DataGridView можно:
1. с помощью специального мастера;
2. с помощью свойства Columns
3. программно.

16.

Добавление столбца с помощью
специального мастера
1. вызвать меню «DataGridView Tasks» с помощью клика на стрелке вправо
(правая верхняя часть прямоугольной области dataGridView1);
2. в меню «DataGridView Tasks» выбрать команду «Add Column…». В
результате откроется окно «Add Column»,в котором можно настроить
название колонки, тип данных колонки, название заголовка и т.д.

17.

Добавления столбцов в таблицу
с помощью свойства Columns
В окне свойств установить свойство Columns (щелкнуть по кнопке с
многоточием) и в появившемся окне нажать кнопку Add.
2
3
1
4

18.

Добавления столбцов в таблицу программно
Чтобы добавить столбец программным путем используется метод
(команда) Add из коллекции Columns.
// Добавить столбец с именем column-1,
// заголовок столбца - "Header column - 1"
dataGridView1.Columns.Add("column-1", “Столбик");

19.

Добавления столбцов в таблицу программно
Чтобы добавить столбец программным путем используется метод
(команда) Add из коллекции Columns.
// Настройка столбцов
dataGridView1.ColumnCount = 3;
dataGridView1.Columns[0].Name = "ID";
dataGridView1.Columns[1].Name = "Имя";
dataGridView1.Columns[2].Name = "Возраст";

20.

Определение количества столбцов
Определить текущее количество столбцов в dataGridView
int n = dataGridView1.Columns.Count;
label1.Text =n.ToString();

21.

Удаление столбцов из таблицы
1. Чтобы удалить столбец, нужно в окне DataGridView Tasks
перейти по ссылке Edit Columns и в появившемся окне нажать
кнопку Remove.
2. Можно также воспользоваться свойством Columns.

22.

Удаление столбцов из таблицы
Чтобы удалить столбец используется один из двух методов из
коллекции Columns:
1. метод RemoveAt() – удаляет столбец по заданному индексу в
коллекции;
dataGridView1.Columns.RemoveAt(1);
2. метод Remove() – удаляет столбец по его имени
dataGridView1.Columns.Remove("head1");

23.

Настройка свойств столбцов в DataGridView
Name - имя столбца;
AutoSizeMode - подгонка ширины столбца по
его содержимому
Resizable - разрешает менять ширину
столбца
Frozen - фиксация столбца (столбец не
передвигается при прокручивании таблицы)
SortMode - сортировка данных в таблице по
этому столбцу
HeaderText - текст заголовка столбца
ToolTipText - всплывающая подсказка для
столбца
Width - ширина поля
Visible - делает столбец невидимым
MaxInputLength - максимально вводимая
длина текста
MinimumWidth - минимальная ширина
столбца
ReadOnly - блокировка столбца для
редактирования данных

24.

Сортировка данных столбцов в DataGridView
Для этого используется метод Sort, имеющий следующий синтаксис:
DataGridView.Sort(<Имя столбца>, <Порядок сортировки>)
• DataGridView - это имя объекта,
• <Имя столбца> - это имя столбца (свойство Name ) по которому происходит
сортировка записей в таблице,
• <Порядок сортировки> определяет порядок сортировки и может принимать
два значения:
- System.ComponentModel.ListSortDirection.Ascending - сортировка по
возрастанию;
- System.ComponentModel.ListSortDirection.Descending - сортировка по
убыванию.

25.

Добавление строк в таблицу
Добавлять строку можно одним из двух способов:
1. Вставка напрямую через пользовательский интерфейс
Если свойство AllowUserToAddRows DataGridView установлено в true (что
является
значением
по
умолчанию),
пользователи
могут
добавлять строки напрямую через интерфейс DataGridView.
2. Добавление строки программно
Чтобы добавить строку программно, используйте метод Rows.Add().
dataGridView1.Rows.Add();

26.

Добавление строк в таблицу
dataGridView1.Rows.Add("Ivan", 25, "OMSK");
private void button1_Click(object sender, EventArgs e)
{
// Создаем новый массив с данными для строки
string[] newRow = { "3", "Алексей", "28" };
// Добавляем строку в DataGridView
dataGridView1.Rows.Add(newRow);
}

27.

Удаление строк из таблицы
Для удаления строки используется один из двух методов:
метод RemoveAt() – удаляет строку по заданному индексу;
dataGridView1.Rows.RemoveAt(0);
удаление всех строк из dataGridView1
while (0 != dataGridView1.RowCount)
{
dataGridView1.Rows.RemoveAt(0);
}

28.

Удаление строк из таблицы
private void button4_Click(object sender, EventArgs e)
{
int nr, nc;
nc = dataGridView1.Columns.Count; // количество столбцов
nr = dataGridView1.RowCount;
if ((nc > 0) && (nr > 1))
{
dataGridView1.Rows.RemoveAt(0); // удалить первую строку
label1.Text = "Строка удалена";
}
else
{
label1.Text = "Строка не удалена";
}
}

29.

Количество строк и столбцов в таблице
Определить количество столбцов
int n = dataGridView1.Columns.Count;
label1.Text = n.ToString();
Определить количество строк
int n = dataGridView1.Rows.Count;
label1.Text = (n - 1).ToString();

30.

Обращение к ячейкам DataGridView с
использованием C#

31.

Индексаторы таблицы DataGridView
Данные элемента управления DataGridView отображаются в прямоугольном
таблице ячеек, которые можно представить в виде
коллекции строк или столбцов.
Каждый столбец ячеек имеет в верхней части ячейку
заголовка, которая, как правило, содержит идентифицирующий этот столбец
текст, а в начале каждой строки расположена ячейка заголовка строки.

32.

Индексаторы таблицы DataGridView
Обращение к строкам и столбцам ячеек выполняется через
свойства объекта DataGridView.
Свойство Rows возвращает значение типа DataGridRowCollection,
представляющее коллекцию всех строк, а обращение к конкретной
строке выполняется с помощью индекса.
dataGridView1.Rows[2]
ссылка на отдельную строку

33.

Индексаторы таблицы DataGridView
Индексация столбцов (Columns) и строк (Rows) идет
относительно нуля.
• Столбец с индексом 0 самый левый, и строка с индексом 0 самая
верхняя.
• Количество строк можно получить через свойство RowCount.

34.

Индексаторы таблицы DataGridView
Свойство Columns элемента управления возвращает значение типа
DataGridViewColumnCollection, которое также можно индексировать
для обращения к конкретному столбцу.
dataGridView1.Columns[2]
ссылка на отдельный столбец
Индексация строк и столбцов
осуществляется, начиная с нуля.

35.

Индексаторы таблицы DataGridView
Свойство Cells объекта DataGridRowCollection представляет
коллекцию, содержащую ячейки строки, и это свойство можно
индексировать для получения доступа к конкретной ячейке в
строке.
dataGridView1.Rows[2].Cells[2]
ссылка на конкретную ячейку

36.

Индексаторы таблицы DataGridView
Для обращения к ячейке в DataGridView необходимо указать
номер строки и номер столбца.
//№ строки добавляем в первый столбец Cells[0]
int a=56;
dataGridView1.Rows[0].Cells[0].Value = a.ToString();
//текст добавим во второй столбец Cells[1]
dataGridView1.Rows[0].Cells[1].Value = "пример текста";
Value - значение

37.

Как добраться до числовых значений матрицы?
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
A[i, j] = Conver.ToInt32(dataGridView1.Rows[i].Cells[j].Value);
}
Как внести данные в ячейку?
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
dataGridView1.Rows[i].Cells[j].Value = A[i,j].ToString();
}

38.

Установка размера таблицы(массива)

if ((textBox1.Text!="")&&(textBox2.Text!=""))
{
n= Convert.ToInt32(textBox1.Text);
m = Convert.ToInt32(textBox2.Text);
//Чистка столбцов компонента DataGridView, если они не пусты
dataGridView1.Columns.Clear();
//Заполнение компонента DataGridView столбцами
dataGridView1.ColumnCount = n;
//Заполнение компонента DataGridView строками
dataGridView1.RowCount = m;
}
else
{
MessageBox.Show( "Заполните, пожалуйста, данные", "Ошибка ввода данных" ); }

39.

Cчитывание данных из ячеек таблицы и
занесение их в массив
private void button1_Click(object sender, EventArgs e)
{
n = Convert.ToInt32(textBox1.Text);
m = Convert.ToInt32(textBox2.Text);
//Чистка столбцов компонента DataGridView, если они не пусты
dataGridView1.Columns.Clear();
//Заполнение компонента DataGridView столбцами
dataGridView1.ColumnCount = m;
//Заполнение компонента DataGridView строками
dataGridView1.RowCount = n;
A = new int[n, m];
}

40.

Заполнение массива случайными числами и
вывод их в ячейки таблицы
int [,] A; //глобальное объявление


private void button2_Click(object sender, EventArgs e)
{
Random rnd = new Random();
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
A[i, j] = rnd.Next(-20, 20);
dataGridView1.Rows[i].Cells[j].Value = A[i,j].ToString();
}
}

41.

Выделение ячейки таблицы другим цветом
int [,] A;

private void button2_Click(object sender, EventArgs e)
{
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
if (A[i,j] == 0)
{
dataGridView1.Rows[i].Cells[j].Style.BackColor = System.Drawing.Color.Red;
}
}
dataGridView1.Rows[i].Cells[j].Style.BackColor = System.Drawing.Color.White;

42.

Установка текста ячейки заголовка столбца
Свойство HeaderText используется для изменения текста в
заголовке столбца.
dataGridView1.Columns[0].HeaderText = "Имя";
dataGridView1.Columns[1].HeaderText = "Телефон";
dataGridView1.Columns[2].HeaderText = "Город";
dataGridView1.Columns[3].HeaderText = "Страна";
dataGridView1.Columns[4].HeaderText = "Адрес";

43.

Установка подсказок для столбцов
Свойство ToolTipText используется для подсказок.
dataGridView1.Columns[0].ToolTipText = "Имя пользователя";
dataGridView1.Columns[1].ToolTipText = "Телефонный номер ";

44.

//заполняем элементы массива, данные берём из ячеек таблицы
A[i, j]= Convert.ToInt32(dataGridView1.Rows[i].Cells[j].Value);

45.

Запрет добавления строк в таблицу
Для того чтобы запретить добавление пользователем строк в
dataGridView нужно использовать свойство AllowUserToAddRows,
которому задать значение false.

46.

Редактирование содержимого ячейки в DataGridView
Для редактирования содержимого ячейки в DataGridView
необходимо установить свойство ReadOnly ячейки в значение
false.
// Установка ячейки с координатами (rowIndex, columnIndex) в режим
редактирования
dataGridView.Rows[rowIndex].Cells[columnIndex].ReadOnly = false;

47.

Основные свойства dataGridView
RowCount
– число строк в таблице.
(Не отражается в окне свойств)
ColumnCount
– число столбцов в таблице.
RowHeadersVisible
– определяет, выводится ли столбец с заголовками
строк (true – выводится, false – нет).
ColumnHeadersVisible
– определяет, выводится ли строка с заголовками
столбцов (true – выводится, false – нет).
CurrentCell
– делает некоторую ячейку активной или
обращается к активной ячейке.

48.

49.

Пример. Построить таблицу Пифагора.

50.

Пример. Построить таблицу Пифагора.
1 шаг – Создание сетки
dataGridView1.ColumnCount = 9;
dataGridView1.RowCount = 9;
2 шаг – Установка ширины колонок
for(int i=0;i<9;i++)
{
dataGridView1.Columns[i].Width = 40;
}

51.

3 шаг – вывод надписи в заголовки строки\ и столбцов
for (int i = 0; i < 9; i++)
{
dataGridView1.Rows[i].HeaderCell.Value = (i+1).ToString();
dataGridView1.Columns[i].HeaderCell.Value = (i+1).ToString();
}
4 шаг – вывод данных в сетку
for (int i = 0; i < 9; i++)
for (int j = 0; j < 9; j++)
{
dataGridView1.Rows[i].Cells[j].Value = ((i+1)*(j+1)).ToString();
}

52.

Нужно сделать так, чтобы в чётных строках закрашивались
чётные ячейки (фон если хотите), а в нечётных строках - нечётные
ячейки.
{
//Color clBlack =Color.Blue; -- обьявлние переменной цвета
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
{
if (i%2==j%2) // шахматные ячейки и белый текст на чёрном фоне
{
dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.Black;
dataGridView1.Rows[i].Cells[j].Style.ForeColor = Color.White;
}
else
dataGridView1.Rows[i].Cells[j].Style.BackColor = Color.White;
}
}

53.

DataGridView и картинки
dataGridView1.RowCount = 3;
DataGridViewImageColumn img = new
DataGridViewImageColumn();
img.Name = "imageColumn";
dataGridView1.Columns.Add(img);
Image i = Image.FromFile(@"c:\1.png");
dataGridView1.Rows[0].Cells["imageColumn"].Value = i;
i = Image.FromFile(@"c:\2.png");
dataGridView1.Rows[1].Cells["imageColumn"].Value = i;
Но картинка не поместилась в ячейку
Что делать?

54.

Надо добавить строчку, которая автоматически корректирует
высоту строк в соответствии с их содержимым при каждом
изменении содержимого.
dataGridView1.RowCount = 3;
DataGridViewImageColumn img = new DataGridViewImageColumn();
img.Name = "imageColumn";
dataGridView1.Columns.Add(img);
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
Image i = Image.FromFile(@"c:\1.png");
dataGridView1.Rows[0].Cells["imageColumn"].Value = i;
i = Image.FromFile(@"c:\2.png");
dataGridView1.Rows[1].Cells["imageColumn"].Value = i;

55.

Текст выводится, но не помещается в ячейку
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.RowCount = 3;
dataGridView1.Rows[0].Cells[0].Value = "Мама мыла раму!!!";
}
Надо добавить строчки,
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.RowCount = 3;
this.dataGridView1.DefaultCellStyle.WrapMode = DataGridViewTriState.True;
dataGridView1.AutoSizeRowsMode = DataGridViewAutoSizeRowsMode.AllCells;
dataGridView1.Rows[0].Cells[0].Value = "Мама мыла раму!!!";
}
Разрешающие
Переносить строки
Автоматическая
установка
высоты строки

56.

Надо добавить строчку, которая автоматически корректирует
ширину текста строк в заголовке строки и в соответствии с их содержимым
private void button1_Click(object sender, EventArgs e)
{
dataGridView1.RowHeadersWidthSizeMode =
DataGridViewRowHeadersWidthSizeMode.AutoSizeToAllHeaders;
for (int i = 0; i < 3; i++)
{
dataGridView1.Rows[i].HeaderCell.Value = "dfjgkjkljkljkljk ljkljkljlkjkljkl";
dataGridView1.Columns[i].HeaderCell.Value = "dddddddddddd ddddddddddd ddddddd";
}
}

57.

Посчитать количество
элементов в столбиках
больших числа 2
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
int i, j;
Random rnd = new Random();
int[,] A;
int kol = 0;
private void Form1_Load(object sender, EventArgs e)
{
dataGridView1.ColumnCount = 3;
dataGridView1.RowCount = 6;
for (int i = 0; i < 9; i++)
{
dataGridView1.Columns[i].Width = 40;
}
}

58.

Посчитать количество
элементов в столбиках
больших числа
2(продолжение)
private void button1_Click(object sender, EventArgs e)
{
A = new int[6,3];
for (i = 0; i < 6; i++)
for (j = 0; j < 3; j++)
{
A[i, j] = rnd.Next(2, 6);
dataGridView1.Rows[i].Cells[j].Value = A[i, j].ToString();
}
}
private void button2_Click(object sender, EventArgs e)
{
for (j = 0; j <3; j++)
{ kol = 0;
for (i = 0; i <6; i++)
{if (A[i, j] > 2)
{
kol++;
}
}
textBox1.Text += kol.ToString()+" ";
}
}
English     Русский Правила