Как добавить пользовательский тип, такой как Point [], чтобы иметь возможность сохранять данные в файле настроек приложения? - PullRequest
2 голосов
/ 08 ноября 2019

Как сохранить массив точек в файле настроек в C #.

В Proprties в файле settings.setting есть только точка, int, строка ...

Point [] Не существуеттам.

Конструктор VS создается как класс настроек и автоматически генерирует свойства на основе имен настроек, но без какого-либо массива.

Ответы [ 2 ]

0 голосов
/ 08 ноября 2019

Ярлык

  1. На странице настроек добавьте новую запись (скажем, MyPoints) типа Point.

enter image description here

В папке свойств вашего проекта найдите и откройте Settings.settings, используя блокнот или блокнот ++, как вам бы хотелось:

enter image description here

Измените тип записи MyPoints следующим образом:

С:

<Setting Name="MyPoints" Type="System.Drawing.Point" Scope="User">
    <Value Profile="(Default)">0, 0</Value>
</Setting>

На:

<Setting Name="MyPoints" Type="System.Drawing.Point[]" Scope="User">
    <Value Profile="(Default)" />
</Setting>
Сохраните и закройте файл.

Теперь ваш новый тип (Точка []) находится среди других типов на странице настроек.

enter image description here

Пример кода:

var points = new [] { new Point(1, 1), new Point(2, 2), new Point(3, 3) };

//Set
Properties.Settings.Default.MyPoints = points;

//Get
points = Properties.Settings.Default.MyPoints;

Удачи.

0 голосов
/ 08 ноября 2019

Вы можете создать такой класс:

public class Points : List<Point>
{
}

Далее соберите проект.

Затем вы можете добавить этот параметр с помощью мастера Visual Studio, дважды щелкнув Settings.settings вProperties раздел проекта в обозревателе решений:

  • Добавьте новое имя, например Points или SomePoints.

  • Выберите пользовательский тип, просматривая и определяя как: TheClassNamespace.Points.

И все готово.

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

Например:

private void ButtonCreatePoints_Click(object sender, EventArgs e)
{
  if ( Properties.Settings.Default.Points == null )
    Properties.Settings.Default.Points = new Points();
  Properties.Settings.Default.Points.Add(new Point(10, 10));
  Properties.Settings.Default.Points.Add(new Point(20, 20));
  Properties.Settings.Default.Save();
}

private void ButtonViewPoints_Click(object sender, EventArgs e)
{
  string str = "";
  foreach ( var point in Properties.Settings.Default.Points )
    str += $"{point.X},{point.Y}" + Environment.NewLine;
  MessageBox.Show(str.TrimEnd(Environment.NewLine.ToCharArray()));
}

При первом запуске, если мы нажимаем CreatePoints и ViewPoints, он показывает созданные точки.

И если мы закрываем приложениеи запустите его снова, нажав ViewPoints, вы увидите те же точки, которые были сохранены.

Вы можете поставить нулевую проверку, чтобы создать ее при запуске программы в Main или в конструкторе основной формы или событии load ... ночто перед использованием этого параметра.

Если вам нужно использовать этот параметр в качествеn массив, вы можете написать:

Properties.Settings.Default.Points.ToArray();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...