// В конструкторе получаем ссылку на списк книг из главной формы public BookNodeForm(BookStore bk) { InitializeComponent(); _bk = bk; // Устанавливаем текстовые поля с датой и ценой по умолчанию textBoxPrice.Text = "0"; textBoxYear.Text = DateTime.Today.Year.ToString(); }
public static void SaveXml(BookStore bk, string fileName) { // передаем в конструктор тип класса XmlSerializer writer = new XmlSerializer(typeof(BookStore)); // получаем поток, куда будем записывать сериализованный объект FileStream sw = new FileStream(fileName, FileMode.Create, FileAccess.ReadWrite); StreamWriter file = new StreamWriter(sw); writer.Serialize(file, bk); file.Close(); }
// Открытие XML файла private void ButtonOpenXML_Click(object sender, EventArgs e) { // Если в документе были не сохраненные изменения if (_isDocumentChanged) { // Спрашиваем пользователя if (MessageBox.Show($"Вы не сохранили изменения в текущем файле! Все равно открыть новый?", "Уведомление!", MessageBoxButtons.YesNo, MessageBoxIcon.Question) == DialogResult.No) { return; } } OpenFileDialog openFileDlg = new OpenFileDialog(); openFileDlg.Filter = "XML files (*.xml)|*.xml"; if (openFileDlg.ShowDialog() == DialogResult.OK) { // Пробуем открыть xml файл try { _bs = _controller.OpenXml(openFileDlg.FileName); } catch (Exception ex) { MessageBox.Show($"Ошибка при открытии файла {ex.Message}", "Ошибка!", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } // Чистим таблицу от старых записей bookDataGridView.Rows.Clear(); // Инициализируем таблицу данными из файла foreach (Book item in _bs) { bookDataGridView.Rows.Add(); bookDataGridView["name", bookDataGridView.Rows.Count - 1].Value = item.Title; foreach (var i in item.Authors) { bookDataGridView["author", bookDataGridView.Rows.Count - 1].Value += i; } bookDataGridView["price", bookDataGridView.Rows.Count - 1].Value = item.Price; bookDataGridView["category", bookDataGridView.Rows.Count - 1].Value = item.Category; } } }