2 |
private void buttonOverview_Click(object sender, EventArgs |
||
e) |
|
|
|
3 |
{ |
|
|
4 |
OpenFileDialog open_dialog = new OpenFileDialog(); |
|
|
|
open_dialog.Filter |
= |
"Image |
5 |
Files(*.BMP;*.JPG;*.GIF;*.PNG)|*.BMP;*.JPG;*.GIF;*.PNG|All |
||
|
files (*.*)|*.*"; |
|
|
6 |
if (open_dialog.ShowDialog() == DialogResult.OK) |
|
|
7 |
{ |
|
|
8 |
try |
|
|
9 |
{ |
|
|
10 |
this.imageBytes = File.ReadAllBytes(open_dialog.FileName); |
||
11 |
labelLoadingStatus.Text = "Успешно"; |
|
|
12 |
} |
|
|
13 |
catch |
|
|
14 |
{ |
|
|
15 |
labelLoadingStatus.Text = "Ошибка"; |
|
|
16 |
} |
|
|
17 |
} |
|
|
18 |
} |
|
|
Для хранения картинок в памяти и сохранения в базе данных необходимо преобразовывать их в массив байтов. В строке 1 создается массив imageBytes, который будет хранить набор байтов. Поиск картинки происходит через диалоговое окно OpenFileDialog, экземпляр которого open_dialog создается в строке 4. Свойство Filter задает фильтр файлов,
благодаря чему в диалоговом окне можно отфильтровать файлы по расширению. Фильтр задается в следующем формате
Название_файлов|*.расширение
Например,
Текстовые файлы(*.txt)|*.txt
Можно задать сразу несколько фильтров, для этого они разделяются вертикальной линией |. Например,
Bitmap files (*.bmp)|*.bmp|Image files (*.jpg)|*.jpg
С помощью метода ShowDialog() происходит открытие диалогового
окна для открытия файла.
Рисунок 17.34 – Диалоговое окно для открытия файла
Если в окне была нажата кнопка «Открыть», то абсолютный путь до загружаемой картинки сохраняется в свойство FileName объекта open_dialog и передается в качестве параметра в метод ReadAllBytes,
который открывает этот файл, считывает содержимое файла в массив байтов imageBytes и затем закрывает файл. После корректного завершения загрузки файла в labelLoadingStatus выводится сообщение «Успешно». Если во время чтения возникнет исключение, то в labelLoadingStatus выведется сообщение «Ошибка».
Добавление нового пользователя в базу данных происходит по нажатию кнопки Зарегистрироваться (buttonReg). Реализация метода обработчика нажатия на кнопку Зарегистрироваться представлена в листинге 17.3.
|
|
Листинг 17.3. – Регистрация пользователя |
|
|
|
|
|
1 |
private void buttonReg_Click(object sender, |
Метод обработчик нажатия на кнопку buttonReg |
|
EventArgs e) |
|||
|
|
||
|
|
|
|
2 |
{ |
|
|
|
|
|
|
3 |
if (comboBoxRole.SelectedItem.ToString() == |
Проверка выбранной при регистрации роли на |
|
"Студент") |
соответствие значению «Студент» |
||
|
|||
|
|
|
|
4 |
{ |
|
|
|
|
|
|
5 |
using (EntityModelContainer db = new |
Создание объекта db контекста данных |
|
EntityModelContainer()) |
EntityModelContainer |
||
|
|||
|
|
|
|
6 |
{ |
|
|
|
|
|
|
|
Student student = new Student() { Name = |
|
|
|
textBoxFIO.Text, NumberGroup = |
Создание объекта student класса Student и |
|
7 |
int.Parse(textBoxNumGroup.Text), PersonalData = |
инициализация его свойств значениями, |
|
|
richTextBoxPersonalData.Text, Photo = |
введенными в соответствующие текстовые поля |
|
|
this.imageBytes }; |
|
|
|
|
|
|
|
|
Добавление созданного объекта student в |
|
8 |
db.StudentSet.Add(student); |
коллекцию сущностей StudentSet из контекста |
|
|
|
данных, отвечающую за хранение сущностей в |
|
|
|
|
|
|
базе данных |
|
|
|
|
|
9 |
db.SaveChanges(); |
Сохранение изменений результата запроса в базе |
|
данных |
|||
|
|
||
|
|
|
|
|
User user = new User() { Student = student, |
Создание объекта user класса User и |
|
|
инициализация его свойств значениями, |
||
|
Login = textBoxLogin.Text, Password = |
||
10 |
введенными в соответствующие текстовые поля |
||
textBoxPassword.Text, Role = |
|||
|
(навигационному свойству Student |
||
|
(string)comboBoxRole.SelectedItem }; |
||
|
присваивается созданный ранее объект student) |
||
|
|
||
|
|
|
|
|
|
Добавление созданного объекта user в |
|
11 |
db.UserSet.Add(user); |
коллекцию сущностей UserSet из контекста |
|
данных, отвечающую за хранение сущностей в |
|||
|
|
||
|
|
базе данных |
|
|
|
|
|
12 |
db.SaveChanges(); |
Сохранение изменений результата запроса в базе |
|
данных |
|||
|
|
||
|
|
|
|
13 |
} |
|
|
|
|
|
|
14 |
} |
|
|
|
|
|
|
15 |
else if (comboBoxRole.SelectedItem.ToString() == |
Проверка выбранной при регистрации роли на |
|
"Преподаватель") |
соответствие значению «Преподаватель» |
||
|
|||
|
|
|
16 |
{ |
|
|
|
|
|
|
17 |
using (EntityModelContainer db = new |
Создание объекта db контекста данных |
|
EntityModelContainer()) |
EntityModelContainer |
||
|
|||
|
|
|
|
18 |
{ |
|
|
|
|
|
|
|
Professor professor = new Professor() { Name = |
|
|
|
textBoxFIO.Text, Position = |
Создание объекта professor класса Professor |
|
19 |
textBoxNumGroup.Text, PersonalData = |
и инициализация его свойств значениями, |
|
|
richTextBoxPersonalData.Text, Photo = |
введенными в соответствующие текстовые поля |
|
|
this.imageBytes }; |
|
|
|
|
|
|
|
|
Добавление созданного объекта professor в |
|
20 |
db.ProfessorSet.Add(professor); |
коллекцию сущностей ProfessorSet из |
|
контекста данных, отвечающую за хранение |
|||
|
|
||
|
|
сущностей в базе данных |
|
|
|
|
|
21 |
db.SaveChanges(); |
Сохранение изменений результата запроса в базе |
|
данных |
|||
|
|
||
|
|
|
|
|
User user = new User() { Professor = professor, |
Создание объекта user класса User и |
|
22 |
инициализация его свойств значениями, |
||
Login = textBoxLogin.Text, Password = |
|||
|
введенными в соответствующие текстовые поля |
||
|
|
||
|
|
|