我的应用程序当前使用用户设置系统(通过项目属性)来存储用户特定数据。我使用这些设置而不是写入/来自App.Config,因为我需要在ClickOnce更新其构建时保持数据。
现在我需要用户能够指定要存储在用户设置中的字符串列表。我已经处理了C#PropertyGrid中的设置,并且我已经验证了如果我设置MyPropertyGrid.SelectedObject = new List<string>()
,它会给我一个合适的编辑器来编辑字符串列表。
不幸的是,当我转到Project Preferences - &gt;设置并单击浏览以获取类型,我无法选择列表或查找用于字符串列表的任何好类型。有没有人对如何在用户设置中存储字符串列表有任何建议?
答案 0 :(得分:2)
当设计师不允许您选择类型时,您可以手动添加自己的设置。对于某些内置类型和许多自己的自定义类型,可能会发生这种情况。这是关于SO的类似问题的链接:
这里是答案的链接(在VB.NET中,但原则适用):
http://blog.coretech.dk/jgs/add-custom-data-type-structure-to-mysettings-in-vbnet-wpf/
答案 1 :(得分:1)
嗯......我可以在类型列表中看到System.Collections.Specialized.StringCollection
。你为什么不用这个?
您可以在StringCollection
和List<string>
之间使用以下转换:
var stringList = stringCollection.Cast<string>().ToList();
var stringCollection = new StringCollection();
stringCollection.AddRange(stringList.ToArray());
答案 2 :(得分:0)
设计人员无法执行此操作,但您可以手动编辑设置文件。
问题是,VS允许在设置文件中默认序列化int []类型 - 它不允许您默认选择它。因此,创建一个具有所需名称的设置(例如SomeTestSetting)并使其成为任何类型(例如默认情况下为字符串)。保存更改。
现在转到项目文件夹并打开&#34; Properties \ Settings.settings&#34;带文本编辑器的文件(例如,记事本)或者您可以通过右键单击解决方案资源管理器中的&#34;在VS中打开它。 - &GT;属性 - &gt; Settings.settings&#34;,选择&#34;打开...&#34;然后选择&#34; XML Editor&#34;或&#34;源代码(文本)编辑器&#34;。在打开的xml设置中找到您的设置(它将如下所示):
<Setting Name="SomeTestSetting" Type="System.String" Scope="User">
<Value Profile="(Default)" />
</Setting>
更改&#34;类型&#34;从System.String到List的参数。现在这部分将如下所示:
<Setting Name="SomeTestSetting" Type="System.Collections.Generic.List`1[System.String]" Scope="User">
<Value Profile="(Default)" />
</Setting>