Сохранение простых пользовательских настроек в Windows Forms с помощью C # - PullRequest
6 голосов
/ 07 июня 2011

Я пишу свое первое приложение Windows Forms , используя VS 2010 и C # . Он не использует базу данных, но я хотел бы сохранить пользовательские настройки, такие как путь к каталогу и помеченные флажки. Какой самый простой способ сохранить эти настройки?

Ответы [ 5 ]

9 голосов
/ 07 июня 2011

Я предлагаю вам использовать встроенное приложение Settings, чтобы сделать это. Вот статья, рассказывающая об этом.

Пример использования:

MyProject.Properties.Settings.Default.MyProperty = "Something";
6 голосов
/ 07 июня 2011

Вы можете использовать атрибут serializable вместе с классом «settings». Для небольшого количества информации это действительно ваш лучший выбор, так как он прост в реализации. Например:

  [Serializable]
  public class MySettings  
  {
    public const string Extension = ".testInfo";

    [XmlElement]
    public string GUID { get; set; }

    [XmlElement]
    public bool TurnedOn { get; set; }

    [XmlElement]
    public DateTime StartTime { get; set; }

    public void Save(string filePath)
    {
      XmlSerializer serializer = new XmlSerializer(typeof(MySettings));
      TextWriter textWriter = new StreamWriter(filePath);
      serializer.Serialize(textWriter, this);
      textWriter.Close();
    }

    public static MySettings Load(string filePath)
    {
      XmlSerializer serializer = new XmlSerializer(typeof(MySettings));
      TextReader reader = new StreamReader(filePath);
      MySettings data = (MySettings)serializer.Deserialize(reader);
      reader.Close();

      return data;
    }
  }

Вот, пожалуйста. Вы можете сильно сократить и вставить это прямо в ваш код. Просто добавьте свойства по мере необходимости, и не забывайте атрибут [XMLElement] в ваших интересных свойствах.

Еще одним преимуществом этого дизайна является то, что вам не нужно возиться с громоздкими подходами Application.Settings, и вы можете изменять свои файлы вручную, если вам нужно.

2 голосов
/ 07 июня 2011

Самый простой способ - в настройках app.config , которые вы можете установить в конструкторе в настройках свойств проекта (убедитесь, что вы установили их как пользовательские настройки, а не настройки приложения, иначе вы не сможете сохранитьих) вы можете затем читать и записывать их с помощью C #

для чтения и записи только для доступа к свойствам

Properties.Settings.Default.<your property>

. Существуют также методы для сохранения свойств в профиле пользователя или для сброса в значения по умолчанию.

Properties.Settings.Default.Reset();
Properties.Settings.Default.Save();

http://msdn.microsoft.com/en-us/library/a65txexh.aspx

2 голосов
/ 07 июня 2011

Я бы сохранил настройки в файле XML.Таким образом, пользователю будет легко делиться своими настройками на разных компьютерах и т. Д.

Вы также сможете десериализовать XML как класс в своем приложении, предоставляя вам простой доступ к требуемым настройкам.

0 голосов
/ 07 июня 2011

Как насчет добавления локального набора данных в ваш проект (затем создания таблицы настроек) и окончательного экспорта данных в файл XML, его легко использовать и более исправимо

enter image description here

1 - добавить столбцы (например, settingName и settingValue) в вашу локальную таблицу (DataTable1) с помощью конструктора, то

//data set
 DataSet1 ds = new DataSet1();
 DataSet1.DataTable1DataTable settingsTable = (DataSet1.DataTable1DataTable)ds.Tables[0];
 //add new setting 
 settingsTable.Rows.Add(new string[] { "setting1", "settingvalue1" });
 //export to xml file
 settingsTable.WriteXml("settings.xml");

 //if you want to read ur settings back... read from xml
 settingsTable.ReadXml("settings.xml");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...