Курсовая. Пояснительная записка. Курсовая работа Расчетнопояснительная записка Дисциплина Программирование и основы алгоритмизации Студент Буков А. А
Скачать 0.76 Mb.
|
Дополнительные средства навигации и редактирования для таблицы с набором данныхДобавление на форму Form2 компонента типа BindingNavigator (Dock = Bottom, BindingSource = carBindingSource) приведено на рисунке 5. Рисунок 5 – Добавление на форму Form2 компонента типа BindingNavigator Автоматизация действий при добавлении нового элемента данныхНастройка свойства первого столбца таблицы dataGridView1: dataGridView1.Columns. Id1.ReadOnly = True, DefaultCellStyle.ForeColor = GrayText, DefaultCellStyle.SelectionForeColor = GrayText Дополнение метода dataGridView1_CurrentCellDirtyStateChanged: public void updateId() { 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; } } private void dataGridView1_CurrentCellDirtyStateChanged(object sender, EventArgs e) { form2.updateId(); }; Теперь при добавлении нового элемента данных в его свойство Id1, отображаемое в первом столбце таблицы с заголовком №, автоматически заносится номер, который на 1 больше максимального из уже имеющихся номеров в загруженном наборе данных. Сортировка данныхСоздание в компоненте menuStrip1 нового пункта меню первого уровня с текстом Данные (Name - data1) Создание пунктов с текстом Сортировка по (Name - sortby1). Создание пунктов меню с текстом Порядковому номеру (Name – id2), Году (Name – year2), Цене (Name – price2) (рисунок 6). Рисунок 6 – Создание меню с сортировкой Добавление новых операторов в конструктор класса Form2: id2.Tag = 0; year2.Tag = 1; price2.Tag = 2; Добавление трёх вспомогательных методов в описание класса Form2: CompareById, CompareByYear, CompareByPrice: private int CompareById(Car a, Car b) { return a.Id - b.Id; } private int CompareByYear(Car a, Car b) { return a.Year.CompareTo(b.Year); } private int CompareByPrice(Car a, Car b) { return a.Price.CompareTo(b.Price); } Определение обработчика события Click для пунктов меню id2, year2, price2: private void year2_Click(object sender, EventArgs e) { if (dataGridView1.RowCount == 1) return; dataGridView1.CurrentCell = dataGridView1[0, 0]; Comparison switch ((int)(sender as ToolStripMenuItem).Tag) { case 0: comp = CompareById; break; case 1: comp = CompareByYear; break; case 2: comp = CompareByPrice; break; } (carBindingSource.DataSource as List carBindingSource.ResetBindings(false); } Подключение к проекту библиотеки Microsoft.VisualBasic (рисунок 7). Рисунок 7 – Подключение к проекту библиотеки Microsoft.VisualBasic Добавление оператора в начало файла Form2.cs: using Microsoft.VisualBasic; Добавление нового поля в описание класса Form2: private string makeToFind = ""; Дополнение выпадающего меню, связанного с пунктом Данные: добавление в него пункта с текстом Поиск (Name - find1). Изменение первого оператора метода dataGridView1_RowEnter: private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e) { find1.Enabled = bindingNavigatorDeleteItem.Enabled = !dataGridView1.Rows[e.RowIndex].IsNewRow; } Определение обработчика события Click для пункта меню find1: private void find1_Click(object sender, EventArgs e) { makeToFind = Interaction.InputBox("Введите начальную часть производителя авто для поиска:", "Поиск по производителю авто", makeToFind, -1, -1).Trim(); if (makeToFind == "") return; int ind = (carBindingSource.DataSource as List { return a.Country.StartsWith(makeToFind, StringComparison.OrdinalIgnoreCase); }); if (ind != -1) dataGridView1.CurrentCell = dataGridView1[3, ind]; else MessageBox.Show("Производитель авто не найден", "Поиск по производителю авто"); } |