Как загрузить форму и загрузить ее с изменениями, которые пользователь применил к этому? - PullRequest
0 голосов
/ 13 июля 2011

Предположим, что у нас есть форма с различными элементами управления. скажем, текстовое поле и чкбокс. Если пользователь что-то наберет и изменит статус проверки, я хотел бы, закрыв форму и открыв ее снова, я смогу увидеть состояние формы непосредственно перед закрытием (а не заданное состояние). Мне нужно это реализовать в форме с около 50 различных элементов управления. Не могли бы вы дать мне подсказку на это? кстати, я программирую на C #.

Ответы [ 2 ]

1 голос
/ 13 июля 2011

Я думаю, что правильный способ сделать это, чтобы определить модель данных, которая содержит всю информацию, требуемую формой.Затем вы можете сохранить эту модель данных (база данных, xml, ...) и загрузить ее снова.Когда вы открываете форму, и текущий пользователь не заполнил ее, вы можете заполнить значения формы на основе модели данных.Это отделяет ваши данные (которые, я полагаю, вас действительно интересует ваша бизнес-логика) от представления.Возможно, вы захотите взглянуть на шаблон проектирования Model-View-Presenter.

1 голос
/ 13 июля 2011

Редактировать: Новый ответ:

Рекурсивно найти все дочерние элементы управления формы TextBox и CheckBox и сохранить их (в словаре [имя, значение] или в файл илибаза данных, ваш выбор).Затем, когда придет время снова показать форму, полностью измените процесс.Перейдите через детей и найдите предыдущее значение элемента управления в вашем списке.Если ваш старый файл не содержит значения, используйте значение по умолчанию (не устанавливайте свойства «Текст / Проверено»).

Оригинальный ответ: не допускайте, чтобы форма действительно закрывалась, поэтому в форме

protected override OnClosing (CancelEventArgs ea)
{
   ea.Cancel = true;
   this.Hide ();
}

Затем, когда вам нужно снова показать форму,

myForm.Show ();

Это сохранит все точно так, как было.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...