2011-11-02 5 views
0

Я пока не смог найти решение проблемы. У меня есть две формы winforms, Main и Configuration Settings. Форма настроек конфигурации может быть доступна из меню Основной формы.C# сохраняющиеся данные между двумя winforms

Что я хочу сделать, это иметь один экземпляр формы настроек конфигурации, поэтому, когда пользователь вводит информацию в форму, она возвращается в основную форму и закрывается. Но если пользователь решит вернуться к форме настроек конфигурации, появится предыдущая введенная информация.

Настройки конфигурации в основном имеют два поля ввода и кнопку OK.

Как это реализовать?

+3

Какое приложение - WinForms/WPF/WebForms? – sll

+0

Извините. Его winforms – nixgadgets

+1

Если вы считаете, что формы, как только * показывая * данные, я думаю, вы получите более четкое изображение. Общей ошибкой является думать о формах как о гражданах первого класса. Формы никогда не должны содержать данные, а только показывать их. Поэтому сделайте несколько классов для представления состояния вашего приложения (например, документа, загруженного в основную форму, класса с настройками, указанными в форме настроек и т. Д.). –

ответ

2

Для настройки конфигурации вы можете использовать одноэлементный шаблон для хранения данных конфигурации.

class ConfigurationStorage{ 
     private static ConfigurationStorage _instance; 

     // settng example - ConnectionString  
     public string ConnectionString {get;set;} 

     public static ConfigurationStorage GetInstance(){ 
      return _instance ?? (_instance = new ConfigurationStorage()); 
     } 
} 

В форме конфигурации вы можете сделать:

ConfigurationStorage.GetInstance().ConnectionString = "buu"; 

для хранения данных, и то же самое в главной форме retrive его (потому что это тот же объект)

Также вы можете использовать форму Родительское свойство, чтобы установить параметры в MainForm.

+0

Хорошо продемонстрировано. «ConfigurationStorage» теперь сохраняется и может быть доступен из любого места приложения. – DoomerDGR8

0

У вас есть много вариантов. Например:

  • Вы можете хранить последние данные сериализованная конфигурации на жестком диск \ DB (с помощью временного файла).
  • Вы можете передать последнюю определенную конфигурацию в качестве параметра конструктора (и верните ее в вызывающую форму после закрытия).
  • Вы можете отменить событие закрытия формы и скрыть его, а когда вы попытаетесь открыть его снова, вы сделаете его видимым вместо этого.
  • вы можете использовать singletone (как сказал @Kamil)

Когда дело доходит до окна настройки, мне нравится либо хранить свои данные на диск \ DB или передать их первоначальное состояние конструктору.

Смежные вопросы