Вы можете обработать OnFormClosing
событие формы и попросить пользователя сохранить изменения до закрытия формы или приложения.
protected override void OnFormClosing(FormClosingEventArgs e)
{
base.OnFormClosing(e);
DialogResult dr = MessageBox.Show("Do you want to save ?", "Message",
MessageBoxButtons.YesNoCancel, MessageBoxIcon.Information);
if (dr == DialogResult.Yes)
{
this.tableTableAdapter.Update(closureDataDataSet.Table);
// dgvClosures.Refresh();
}
}
Однако, как насчет quick'n'dirty пути: сериализируйте целый Документ в строку XML и затем проанализируйте его назад использующий Синтаксический анализатор DOM?
Я не вижу оснований, почему сериализированная версия испытала бы недостаток в чем-либо. Следить для обеспечения примера?
Потребление памяти было бы значительным, но, с другой стороны, при дублировании целого DOM это не может быть маленьким так или иначе...
Как указывают некоторые комментарии, существуют проблемы с сериализацией и повторной парсификацией документа. Помимо использования памяти, соображений производительности и нормализации, существует также потеря пролога (DTD или схемы), потенциальная потеря комментариев (которые не требуется захватывать), а также потеря того, что может быть значительным белым пробелом. Сериализации следует избегать.
Если реальная цель состоит в том, чтобы сделать копию существующего объекта DOM Document, то с ним следует обращаться программно, в памяти. К счастью, существует относительно простой способ сделать это, используя возможности, доступные на Java 5, или используя внешние XSLT-библиотеки, такие как Xalan, то есть сквозное преобразование.
Ниже показано решение Java 5:
TransformerFactory tfactory = TransformerFactory.newInstance();
Transformer tx = tfactory.newTransformer();
DOMSource source = new DOMSource(doc);
DOMResult result = new DOMResult();
tx.transform(source,result);
return (Document)result.getNode();
В основном, это оно. Вам нужно будет работать с исключениями и, возможно, вы захотите настроить трансформатор, но я оставляю это как упражнение для читателя.