Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
metkurs_progr.docx
Скачиваний:
0
Добавлен:
01.05.2025
Размер:
700 Кб
Скачать
☆

Дополнительные средства навигации и редактирования для таблицы с набором данных

Компонент BindingNavigator является специализированной панелью инструментов, на которую уже добавлены стандартные кнопки для управления набором данных. Вполне допустимо дополнять эту панель новыми кнопками и даже удалять из нее те стандартные кнопки, которые не требуются для разрабатываемого приложения. Кроме того, можно изменять поведение стандартных кнопок.

Добавьте на форму Form1 компонент типа BindingNavigator (он получит имя bindingNavigator1 и будет размещен в области невизуальных компонентов под изображением формы, кроме того, в верхней части формы появится панель инструментов, связанная с этим компонентом).

Для компонента bindingNavigator1 установите:

свойство Dock = Bottom( в результате панель переместиться в нижнюю часть формы);

свойство BindingSource = bindingSource1

Для компонента bindingNavigator1необходимо также выполнить команду SendtoBack (нажав на кнопку … на панели Layoutили воспользовавшись контекстным меню данного компонента). Это необходимо для того, чтобы панель инструментов не заслоняла нижнюю часть таблицы dataGridView1. В результате форма Form1 примет вид:

Теперь с помощью элементов управления, размещенных на панели bindingNavigator1, можно быстро перемещаться по таблице, добавлять новые строки и удалять существующие.

Если текущей является строка NewRow, то действие по удалению выполняется не вполне естественным образом: удаляется строка, предшествующая строке NewRow. Кроме того, при попытке удалить единственную строку NewRow в пустом наборе данных возникает ошибка времени выполнения.

Для исправления указанного недочета определите обработчик события RowEnter для таблицы dataGridView1:

private void dataGridView1_RowEnter(object sender,

DataGridViewCellEventArgs e)

{

bindingNavigatorDeleteItem.Enabled =

!dataGridView1.Rows[e.RowIndex].IsNewRow;

}

Автоматизация действий при добавлении нового элемента данных

Настройте свойства первого столбца таблицы dataGridView1 следующим образом:

dataGridView1.Colums.id1: ReadOnly = True,

DefaultCellSty;e.ForeColor = GrayText,

DefaultCellStyle.SelectionForeColor = GrayText

Дополните метод dataGridView1_CurrentCellDirtyStateChanged (приведен новый вариант метода) :

privatevoid dataGridView1_CurrentCellDirtyStateChanged(object sender,

EventArgs e)

{

menuStrip1.Enabled = !dataGridView1.IsCurrentCellDirty;

int row = dataGridView1.CurrentRow.Index;

if (!dataGridView1.IsCurrentCellDirty &&

(int)dataGridView1["Id1", row].Value == 0)

{

int maxId = 0;

for (int i = 0; i< row; i++)

{

int v = (int)dataGridView1["Id1", i].Value;

if (maxId< v)

maxId = v;

}

dataGridView1["Id1", row].Value = maxId_1;

}

}

Теперь при добавлении нового элемента данных в его свойство Id, отображаемое в первом столбце таблицы с заголовком №, автоматически заносится номер, который на 1 больше максимального из уже имеющихся номеров в загруженном наборе данных.

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]