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

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


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

Проверка правильности на уровне ячейки таблицы



Определение события CellValidating:
private void dataGridView1_CellValidating(object sender, DataGridViewCellValidatingEventArgs e)

{

if (dataGridView1.Rows[e.RowIndex].IsNewRow)

return;

string err = "", s = e.FormattedValue.ToString();

int i; double d;

switch (e.ColumnIndex)

{

// id

case 0:

// make

case 1:

if (s == "")

err = "Поле \"Марка\" не должно быть пустым";

break;

// model

case 2:

if (s == "")

err = "Поле \"Модель\" не должно быть пустым";

break;

// country

case 3:

if (s == "")

err = "Поле \"Производитель\" не должно быть пустым";

break;

// power

case 4:

if (!int.TryParse(s, out i))

err = "Строку нельзя преобразовать в число";

else if (i < 0)

err = "Отрицательные числа не допускаются";

break;

// year

case 5:

if (!int.TryParse(s, out i))

err = "Строку нельзя преобразовать в число";

else if (i < 0)

err = "Отрицательные числа не допускаются";

break;

// price

case 6:

if (!double.TryParse(s, out d))

err = "Строку нельзя преобразовать в число";

else if (d < 0)

err = "Отрицательные числа не допускаются";

break;

}

e.Cancel = err != "";

dataGridView1.Rows[e.RowIndex].ErrorText = err;

}

    1. Проверка правильности на уровне строки таблицы



Определение события RowValidating:
private void dataGridView1_RowValidating(object sender, DataGridViewCellCancelEventArgs e)

{

if (dataGridView1.Rows[e.RowIndex].IsNewRow)

return;

string err = "";

if (dataGridView1[1, e.RowIndex].Value == null)

err = "Поле \"Марка\" должно быть непустым";

e.Cancel = err != "";

dataGridView1.Rows[e.RowIndex].ErrorText = err;

}



    1. Использование XML-сериализации для сохранения и загрузки наборов данных





  1. Добавить на форму Form2 невизуальных компонентов типа OpenFileDialog и SaveFileDialog, а также компонента меню MenuStrip (эти компоненты получат имена openFileDialog1, saveFileDialog1, menuStrip1).

  2. Создать в компоненте menuStrip1 пункт меню первого уровня Файл (Name - file1). В выпадающем меню, связанном с пунктом Файл, создать четыре пункта меню с текстом Создать, Открыть…, Сохранить как…, Выход.

  3. Настройка свойств добавленных компонентов и пунктов меню:

Пункт меню Создать (группа Файл): Name = new1

Пункт меню Открыть (группа Файл): Name = open1

Пункт меню Сохранить как (группа Файл): Name = save1

Пункт меню Выход (группа Файл): Name = exit1

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


using System.IO;

using System.Xml.Serialization;


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


private XmlSerializer xmls = new XmlSerializer(typeof(List));


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


public Form2()

{

InitializeComponent();

contactsBindingSource.DataSource = new List();

}


  1. Описание в классе Form2 нового метода SaveData:


private void SaveData (string name)

{

int n = dataGridView1.RowCount;

for (int i = 0; i < n - 1; i++)

{

dataGridView1.Rows[i].Cells[7].Value = null;

}

if (name == "" || dataGridView1.RowCount == 1)

return;

if (dataGridView1.CurrentRow.IsNewRow)

dataGridView1.CurrentCell =

dataGridView1[0, dataGridView1.RowCount - 2];

StreamWriter sw = new StreamWriter(name, false, Encoding.Default);

xmls.Serialize(sw, carBindingSource.DataSource);

sw.Close();

for (int i = 0; i < n - 1; i++)

{

if (dataGridView1.Rows[i].Cells[8].Value != null)

dataGridView1.Rows[i].Cells[7].Value = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + "");

}

}


  1. Определение обработчика события DropDownOpening для пункта меню Файл, события Click для пунктов меню new1, open1, save1, exit1, а также события Form Closing для формы Form2, обработчика события CurrentCellDirtyStateChange для компонента dataGridView1:


private void new1_Click(object sender, EventArgs e)

{

carBindingSource.DataSource = new List();

SaveData(saveFileDialog1.FileName);

saveFileDialog1.FileName = "";

Text = "CarShop";

dataGridView1.CurrentCell = null;

}
private void open1_Click(object sender, EventArgs e)

{

openFileDialog1.FileName = "";

if (openFileDialog1.ShowDialog() == DialogResult.OK)

{

SaveData(saveFileDialog1.FileName);

string s = openFileDialog1.FileName;

StreamReader sr = new StreamReader(s, Encoding.Default);

carBindingSource.SuspendBinding();

carBindingSource.DataSource = xmls.Deserialize(sr);

carBindingSource.ResumeBinding();

sr.Close();

saveFileDialog1.FileName = s;

Text = "CarShop - " + Path.GetFileNameWithoutExtension(s);

int n = dataGridView1.RowCount;

for (int i = 0; i < n - 1; i++)

{

if (dataGridView1.Rows[i].Cells[8].Value != null)

{

dataGridView1.Rows[i].Cells[7].Value = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + "");

dataGridView1.Rows[i].Height = new Bitmap(dataGridView1.Rows[i].Cells[8].Value + "").Height;

}

}

}

}
private void saveAs1_Click(object sender, EventArgs e)

{

if (saveFileDialog1.ShowDialog() == DialogResult.OK)

{

string h = saveFileDialog1.FileName;

SaveData(h);

Text = "Car - " + Path.GetFileNameWithoutExtension(h);

}

}
private void exit1_Click(object sender, EventArgs e)

{

Close();

}
private void Form2_FormClosing(object sender, FormClosingEventArgs e)

{

SaveData(saveFileDialog1.FileName);

}
private void file1_DropDownOpening(object sender, EventArgs e)

{

saveAs1.Enabled = dataGridView1.RowCount > 1;

}
private void 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;

}

}


    1. 1   2   3   4   5   6


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