开发者

How to save a List<string> on Settings.Default?

开发者 https://www.devze.com 2022-12-31 22:08 出处:网络
I have a ListBox on my Form, I want to save it and load the values when I start the application again.

I have a ListBox on my Form, I want to save it and load the values when I start the application again.

How can I save a list on 开发者_运维知识库PrjName.Properties.Settings.Default?


No problem at all! Create a new setting, e.g. "MyListOfStrings", type doesn't matter.

How to save a List<string> on Settings.Default?

then open settings file in a xml editor

How to save a List<string> on Settings.Default?

How to save a List<string> on Settings.Default?

your file will look like this:

How to save a List<string> on Settings.Default?

now change it as shown below and save it

How to save a List<string> on Settings.Default?

well, that's all, now it will look like that:

How to save a List<string> on Settings.Default?

and in code:

How to save a List<string> on Settings.Default?


I found out that I can't directly save a List<string> on the application settings, but I saw that I can save a StringCollection.

And here I found out that it's very simple to convert from a StringCollection to a List<string>

var list = stringCollection.Cast<string>().ToList();


I know this is an older question, but I feel it is noteworthy to add that you can create a custom class that inherits whatever kind of list you want to use and it makes it very simple to set. For example, if you want a List<CustomData>, you could create the class like this:

using System.Collections.Generic;

namespace YourNamespace
{
    public class CustomCollection : List<CustomData>
    {
    }
}

then open the settings like @pr0gg3r suggested and add this in the <Settings> section:

    <Setting Name="SomeSetting" Type="YourNamespace.CustomCollection" Scope="User">
      <Value Profile="(Default)" />
    </Setting>

You won't be able to use the settings designer, unless it's a basic data type like string or int. If you are using a custom data type, you'll have to initialize it on startup before using it, but I find it still looks more elegant than trying to directly use a list in the settings.


When using the natively supported Type System.Collections.Specialized.StringCollection

I used this code:

        System.Collections.Specialized.StringCollection SavedSearchTerms = new System.Collections.Specialized.StringCollection();

        if (Properties.Settings.Default.SavedSearches != null)
        {
            SavedSearchTerms = Properties.Settings.Default.SavedSearches;
        }

        SavedSearchTerms.Add("Any Value");

        Properties.Settings.Default.SavedSearches = SavedSearchTerms;
0

精彩评论

暂无评论...
验证码 换一张
取 消