Я знаю, что нечто подобное уже задавалось, но вот моя проблема.
В MDI WinForm я хочу сохранить каждую позицию и состояние дочернего окна для каждого пользователя приложения, которое отличается от пользователя, вошедшего в систему. У моего приложения есть свои пользователи; поэтому я не буду использовать пользовательские настройки, такие как my.Settings ... и т. д.
Одним из вариантов является чтение / запись непосредственно в базу данных, но мне не нравится идея получить доступ к базе данных для чего-то такого тривиального, как положение окон. Плюс в том, что я могу хранить эту информацию независимо на машине, на которой работает пользователь, где бы он ни входил, ее предпочтения будут запомнены.
Другой вариант, которому я хотел бы следовать, - использовать Xml для локального хранения этой информации в файле на компьютере пользователя. Структура может быть что-то вроде:
<form name="form name">
<Top>120</Top>
<Left>100</Left>
<State>0</State>
</form>
<form name="another form">
<Top>120</Top>
<Left>120</Left>
<State>1</State>
</form>
Мне трудно понять, как это можно сделать; может быть, используя Linq для Xml? Я обнаружил, что могу написать что-то простое, как
Dim formPos As XElement = _
<User><%= My.Application.connectedUser.id %>
<form1>
<Top>120</Top>
<Left>100</Left>
<State>0</State>
</form1>
<form2>
<Top>120</Top>
<Left>100</Left>
<State>0</State>
</form2>
</User>
Но:
1) Как динамически заполнить параметры xml: Я хочу
<User id="1">
а не
<User><%= My.Application.connectedUser.id %>
, что переводится как <User>1
2) Как написать XElement, когда закончил его сборку. Должен ли я использовать XmlWriter.Create
? Горячий передать его XElement?
3) Что происходит, когда в файле Xml уже есть узел с таким же именем, я хочу перезаписать предыдущие пользовательские настройки, если они уже есть, но не добавить в файл или переписать весь файл, конечно
Спасибо.