标签: my.settings

My.Settings在VB 2010 .NET中保存在哪里?

My.Settings值保存在程序本身,还是他们获取存储在注册表中?所以,例如,如果我My.Settings用程序设置一个值,那么我将程序本身复制到另一台PC - My.Settings值是否仍然设置?

.net vb.net my.settings

16
推荐指数
2
解决办法
4万
查看次数

定义应保存user.config文件的自定义路径?

如果我将我编译的应用程序重命名为例如myapp.exe,app.exe那么当我运行重命名的可执行文件时,将在此路径中生成一个新的用户设置文件夹:

C:\Users\{User}\AppData\Local\{CompanyName}\{ExecutableName}_Url_{SystemGUID or something strange}
Run Code Online (Sandbox Code Playgroud)

所以我放弃了所有保存的设置.

那么我如何解决在VBNET WinForms我自己的位置定义存储user.config文件或使用应用程序设置基础结构的任何其他解决方案的问题?(不保存注册表或其他内容的设置)

PS:我已经阅读了这篇SO帖子,这是一个有点不同的问题,但无论如何我没有理解所谓的解决方案我可以控制.NET用户设置的位置,以避免丢失应用程序升级的设置吗?

.net vb.net application-settings user-config my.settings

10
推荐指数
2
解决办法
6344
查看次数

VB.NET 从 My.Settings 获取默认值

VB2010。我了解如何保存设置并从 My.Settings 命名空间加载它们。我想弄清楚的是如何获取设置的默认值并将其呈现给用户。我不想保存设置我只想显示当前值是什么以及默认值是什么。我试过这个,但我认为它没有做我认为它应该做的事情:

 Msgbox "Current setting: " & My.Settings.CustLineWidth & vbcrlf & _
        "Default setting: " & My.MySettings.Default.CustLineWidth
Run Code Online (Sandbox Code Playgroud)

我在 IDE 中设置的默认值为 10,但用户将其更改为 25。如果我运行上面的代码,我会得到

 Current setting: 25
 Default setting: 25
Run Code Online (Sandbox Code Playgroud)

我想要的是

 Current setting: 25
 Default setting: 10
Run Code Online (Sandbox Code Playgroud)

解决方案:我遍历所有设置并像这样打印出当前值和默认值

        For Each prop As Configuration.SettingsPropertyValue In My.Settings.PropertyValues
            Debug.Print("Name={0}", prop.Name)
            Debug.Print("  Value  ={0}", prop.PropertyValue.ToString)
            Debug.Print("  Default={0}", prop.Property.DefaultValue.ToString)
        Next prop
Run Code Online (Sandbox Code Playgroud)

vb.net default my.settings

5
推荐指数
1
解决办法
8901
查看次数

在运行时(动态)将Editor/EditorAttribute添加到Object的属性

如何在运行时将EditorAttribute(Editor)添加到对象的属性?

我有My.Settings.ExcludeFiles,由设置设计师创建Public Property ExcludedFiles() As Global.System.Collections.Specialized.StringCollection.ExcludedFiles通过属性网格进行编辑时,"字符串集合编辑器"会生成"未找到类型'System.String'上的构造函数"运行时异常.

我无法更改属性的ExcludeFiles属性,因为它们将在下次进行任何设置更改时被覆盖.因此,我必须在运行时附加/添加Editor/EditorAttribute.

我想要做的是添加StringCollectionEditorat运行时,如下所示为design-time属性.

    <Editor(GetType(StringCollectionEditor), GetType(UITypeEditor))> _
Run Code Online (Sandbox Code Playgroud)

解决方案

方法#1

TypeDescriptor.AddAttributes( _
    GetType(Specialized.StringCollection), _
    New EditorAttribute( _
        "System.Windows.Forms.Design.StringCollectionEditor, System.Design, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a", _
         GetType(System.Drawing.Design.UITypeEditor)))
Run Code Online (Sandbox Code Playgroud)

您只需添加此属性一次,例如应用程序初始化.

方法#2

更灵活.请参阅下面的Nicolas Cadilhac 在运行时(动态)添加编辑器/ EditorAttribute到对象属性的答案.它使用派生的CustomTypeDescriptor和TypeDescriptionProvider类.您只需添加一次提供程序,例如应用程序初始化.

propertygrid attributes winforms my.settings

4
推荐指数
1
解决办法
4713
查看次数

将My.Settings变量重置为默认值

如何重置我在调试应用程序时更改的my.settings变量?

vb.net my.settings

3
推荐指数
1
解决办法
1万
查看次数

VB.NET My.Settings Datatable没有保存

我有一个数据表,我想保存到My.Settings数据表然而当我重新打开应用程序时,我发现表没有保存

My.Settings.Datatable = someDatatable
Run Code Online (Sandbox Code Playgroud)

以上陈述或我应该做的其他事情有什么问题吗?

vb.net datatable my.settings

2
推荐指数
1
解决办法
2275
查看次数

sampleVariable As Boolean = My.settings.sampleSettings(boolean dataType)不起作用

我有两个场景涉及使用My.Settings.sampleSettingsa dataType boolean和a sampleVariableas data type boolean.

代码:由于sampleVariable和sampleSettings都是boolean,我就这样声明它们

Dim sampleVariable As Boolean = My.Settings.sampleSettings
Console.WriteLine("Result: " & sampleVariable)
If sampleVariable = False Then
    Console.WriteLine("1")
    sampleVariable = True
Else
    Console.WriteLine("2")
    sampleVariable = False
End If
My.Settings.Save()
Run Code Online (Sandbox Code Playgroud)

输出:输出似乎不满足条件1,它总是满足条件2是假的

Result: False
1
Result: False
1
Result: False
1
Run Code Online (Sandbox Code Playgroud)

代码:在这段代码中,我没有将sampleSettings放到一个布尔变量中,它运行正常.

Console.WriteLine("Result: " & My.Settings.sampleSettings)
If My.Settings.sampleSettings = False Then
    Console.WriteLine("1")
    My.Settings.sampleSettings = True
Else
    Console.WriteLine("2")
    My.Settings.sampleSettings = False
End If
My.Settings.Save()
Run Code Online (Sandbox Code Playgroud)

输出:每当我点击按钮时它会触发不同的条件,这是我的目标.

Result: False
1 …
Run Code Online (Sandbox Code Playgroud)

vb.net if-statement boolean my.settings visual-studio-2015

0
推荐指数
1
解决办法
351
查看次数

将列表保存到 My.Settings

我正在尝试将列表变量保存到My.Settings,但找不到有效的类型。我正在使用 Visual Studio 2017。以下是我构建列表的方式...

Dim Parameters As New List(Of String)
Parameters.Add("Item1")
Parameters.Add("Item2")
Run Code Online (Sandbox Code Playgroud)

尝试加载或保存设置时出现错误。

Dim Times As New List(Of String)
Times = My.Settings.Times
Run Code Online (Sandbox Code Playgroud)

或者

My.Settings.Item("Times") = Times
Run Code Online (Sandbox Code Playgroud)

虽然后者不会显示为错误,但它会导致程序崩溃。

我尝试将设置类型设置为StringStringCollectionListDictionary等,但无济于事。

vb.net settings list my.settings

0
推荐指数
1
解决办法
1960
查看次数