Главная страница

Курсовая. Пояснительная записка. Курсовая работа Расчетнопояснительная записка Дисциплина Программирование и основы алгоритмизации Студент Буков А. А


Скачать 0.76 Mb.
НазваниеКурсовая работа Расчетнопояснительная записка Дисциплина Программирование и основы алгоритмизации Студент Буков А. А
АнкорКурсовая
Дата27.01.2023
Размер0.76 Mb.
Формат файлаdocx
Имя файлаПояснительная записка.docx
ТипКурсовая
#907894
страница4 из 6
1   2   3   4   5   6

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



Добавление на форму Form2 компонента типа BindingNavigator (Dock = Bottom, BindingSource = carBindingSource) приведено на рисунке 5.


Рисунок 5 – Добавление на форму Form2 компонента типа BindingNavigator


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





  1. Настройка свойства первого столбца таблицы dataGridView1:


dataGridView1.Columns. Id1.ReadOnly = True,

DefaultCellStyle.ForeColor = GrayText,

DefaultCellStyle.SelectionForeColor = GrayText


  1. Дополнение метода 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 больше максимального из уже имеющихся номеров в загруженном наборе данных.

    1. Сортировка данных




  1. Создание в компоненте menuStrip1 нового пункта меню первого уровня с текстом Данные (Name - data1)

  2. Создание пунктов с текстом Сортировка по (Name - sortby1).

  3. Создание пунктов меню с текстом Порядковому номеру (Name – id2), Году (Name – year2), Цене (Name – price2) (рисунок 6).




Рисунок 6 – Создание меню с сортировкой


  1. Добавление новых операторов в конструктор класса Form2:



id2.Tag = 0;

year2.Tag = 1;

price2.Tag = 2;


  1. Добавление трёх вспомогательных методов в описание класса 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);

}


  1. Определение обработчика события Click для пунктов меню id2, year2, price2:


private void year2_Click(object sender, EventArgs e)

{

if (dataGridView1.RowCount == 1)

return;

dataGridView1.CurrentCell = dataGridView1[0, 0];

Comparison comp = CompareByYear;

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).Sort(comp);

carBindingSource.ResetBindings(false);

}

    1. Поиск по шаблону




  1. Подключение к проекту библиотеки Microsoft.VisualBasic (рисунок 7).




Рисунок 7 – Подключение к проекту библиотеки Microsoft.VisualBasic


  1. Добавление оператора в начало файла Form2.cs:


using Microsoft.VisualBasic;


  1. Добавление нового поля в описание класса Form2:


private string makeToFind = "";


  1. Дополнение выпадающего меню, связанного с пунктом Данные: добавление в него пункта с текстом Поиск (Name - find1).

  2. Изменение первого оператора метода dataGridView1_RowEnter:


private void dataGridView1_RowEnter(object sender, DataGridViewCellEventArgs e)

{

find1.Enabled = bindingNavigatorDeleteItem.Enabled = !dataGridView1.Rows[e.RowIndex].IsNewRow;

}

  1. Определение обработчика события 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).FindIndex(dataGridView1.CurrentRow.Index, delegate (Car a)

{

return a.Country.StartsWith(makeToFind,

StringComparison.OrdinalIgnoreCase);

});
if (ind != -1)

dataGridView1.CurrentCell = dataGridView1[3, ind];

else

MessageBox.Show("Производитель авто не найден", "Поиск по производителю авто");

}

    1. 1   2   3   4   5   6


написать администратору сайта