问题标签 [my.settings]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
vb.net - 将 My.Settings 重置为上次保存的值
我目前正在使用“设置”表单为我的应用程序设置各种设置。我想要做的是将设置恢复到用户在打开和更改字段之前所做的任何更改之前。我有一个带有数据绑定到设置的文本框,当我进行更改并单击确定时,它会在我下次打开它时保存。当我点击取消时,它也会被保存。不太确定我是否正确地处理了这个问题。
vb.net - My.Settings 应用程序关闭时不会保存
我遇到的问题是项目结束后我的设置似乎没有保存。
我的项目由 FrmMain 和 FrmSettings 组成
代码如下:
FrmMain:设置应在主窗体加载时加载
窗体设置:
我还添加了一个按钮,显示 My.Settings.SettingsSearchTerm 的值是什么,并且它被正确存储,但是一旦项目结束,该值就不会被保存。(使用 me.close() 和 END)
如果您需要我提供更多信息或代码示例,请告诉我。
vb.net - 将 My.Settings 写入文本文件
好的,所以我在写入文本文件、从 My.Settings 检索值时遇到了一些麻烦。代码如下。问题是当我检查文本文件时,它只有第一行(这只是代码中的一个简单字符串)。
这是代码后文本文件的样子:
我的问题是有没有人知道问题是什么,或者有其他方法可以做到这一点。顺便说一句,所有 My.Settings 都是 Specialized.StringCollection,因此它们包含很多字符串。
.net - My.Settings 不保存 ArrayList
我设置了这个空属性:
但是在为属性分配一个新的ArrayList对象后,该属性在每次应用程序执行中始终为空。
在MyBase.Load事件的处理程序中,我调用了这个方法,只是为了测试这个问题:
正如您在上面的代码中看到的那样,我正在为一个新的 ArrayList 分配一个条目,但更改仅在该应用程序执行期间生效,如果我退出应用程序,则该属性再次变为空。
当然,我也检查了这个选项:
但无论如何这是不必要的,因为我在代码中手动保存设置,所以......
为什么会这样?。
我该如何解决这个问题?
更新:
我进行了调查,似乎这是一个已知问题,即 my.settings 无法保存数组、ArrayLists 和任何通用集合(类型)(但另一方面,StringCollection 可以)
但是在这篇文章的最后一个答案(MemoryStream 答案)中,解释了一种将 ArrayList 的更改永久保存到 my.settings 的简单方法,然后在下一次应用程序运行时读取它。
答案似乎很好,但是我对代码和继续执行的步骤有点迷茫,所以有人可以解释那里解释的步骤,但请用一种人类可读的语言来解释我吗?
我已经验证 ArrayList 仍然在下一个应用程序运行中,是的,但我不确定我在做什么,因为如果 MemoryStream 包含旧的 ArrayList,那么我现在正在做的是分配 My.Settings。 MRU 设置为 Arraylist,其中包含更多内容,Arraylists
而不是包含 ? 的原始 ArrayList,String()
无论如何在以这种方式保存设置后如何加载数组条目?
这是我从那个答案中尝试过的:
.net - ArrayList 更改不会影响到 My.Settings
我在这里再次尝试用我在另一个问题ArrayList
中解释过的问题来解决这个问题......不同之处在于这次我没有寻找任何替代解决方案,例如使用其他外部文件来避免真正的问题,我真的很想使用My.Settings和ArrayList来解决这个问题,我想了解这里发生的关于My.Settings的事情!
问题是,如果我们设置这样的设置:
然后在下一个应用程序运行时保留对设置执行的任何更改,此代码演示了该问题:
有人可以教我理解为什么 ArrayList 没有真正保存,或者告诉我如何解决这个问题?
更新
好的,我编写了这个可序列化的类来解决这个问题:
我还编写了这个辅助函数来帮助我解决这个问题:
在我这样初始化设置的那一刻,它是可序列化的:
在我只添加一个字符串的那一刻,它仍然是可序列化的:
但是当我尝试添加我的可序列化类或任何其他类型的数据类型String()
时,ArrayList 开始不可序列化,就像这样:
或者像这样:
...因此 ArrayList 内容不会在下次运行时保留,无法序列化。
我还尝试将设置类型从更改System.Collections.ArrayList
为System.Object
(拼命地),所以现在我可以这样做,但问题仍然存在,我的意思是在下一次运行应用程序时不会保存该集合:
vb.net - 组合框和 My.Settings
我正在使用 My.Settings 为组合框中的每个项目存储不同的文本
看起来像这样
我在项目设置中添加了 5 个类型为“String”的设置
我正在使用此代码
我可以从 my.settings 加载值,但我该如何编辑它。
示例我想输入第三个时期的注释,并在 Form_Closing 上将该文本保存到我的 settings.third 中,以便下次打开表单时它会被加载。
安内尔
vb.net - 当您在 VB.Net 的文本框中输入数字时,如何更改表单中 my.settings 中的值
我想知道你是否可以帮助我?我的问题是,如果您在文本框中输入数字/小数并单击一个按钮,然后在设置中更新以在另一个链接中进行更改,是否有办法在表单中更改 my.Settings 中的值到变量中的 my.Settings ?!
表格一:
公共类 frmConverter
形式二:公共类 frmExchange
结束课
vb.net - 无法保存 My.Settings 数据表
我无法保存我的数据表“dtable”的内容此设置的范围是 USER,但是尽管它在程序运行时保存它。当我启动程序并重新加载 My.Settings.Sales_Mapping 它是空的。
任何人都可以帮忙吗?
c# - .NET 用户设置 - DEBUG 和 RELEASE 模式不同
我希望有一个解决我的应用程序设置问题的方法。每次升级此应用程序(WPF 桌面应用程序)时,我都希望保留我的用户设置。为了实现这一点,我在我的Application_Startup
活动中使用以下代码;
这完美地工作并将用户设置持久化到新版本中,并导致用户设置持久化到目录结构中,如下所示;
但是,我的问题是程序集的基本文件夹不同,具体取决于使用的构建配置。即:如果构建配置是“DEBUG”,那么用于保存用户设置的目录如下;
调试模式
在释放模式下,如下所示;
释放模式
完全不同的目录。版本 1.0.0.0 被搁置在 DEBUG 文件夹中,而版本 1.0.2.0 被放置在 Release 文件夹中。自然; My.Settings.Upgrade()
由于它们位于不同的文件夹中,因此呼叫未找到任何要升级的先前设置。
根据建筑配置,应用程序本质上被认为是两个不同的程序集。
我可以理解什么时候这可能是可取的,但是我有一种情况,我想分发“调试”版本,以便我可以附加到远程运行的进程等。在某个时间点之后,我希望分发“发布”版本的应用程序。
然而,问题是两个版本的用户设置并不通用,并且本质上会导致用户设置丢失。
是否有任何解决方案可以统一跨程序集的构建配置/版本的用户设置的持久性和检索,而无需使用我自己的应用程序设置功能版本?
vb.net - 从提升/作为管理员进程运行非提升的子进程
我的应用程序通过另一个名为“updater.exe”的应用程序有一个内置的自我更新系统,该应用程序与要更新的主应用程序位于同一文件夹中。它下载最新版本,终止旧版本(如果它正在运行),然后覆盖它。
问题是,要做到这一点,updater.exe 必须以管理员权限运行才能访问C:\Program Files\MyApp
到目前为止一切顺利,主应用程序以管理员权限(使用 UAC)运行 updater.exe,但随后出现问题:
更新完成后,我希望新安装的版本自动启动。你猜怎么着?当然,主应用程序也以管理员权限运行。场景很简单:
仅仅因为我的应用程序使用My.Settings
对象,当它以管理员身份运行时它会丢失所有存储的设置,因为通常它总是以普通用户身份启动,并且您可能知道,My.Settings
它是user-sensivite
对象。
我该如何解决这样的问题?我四处搜索,但找不到与“以普通用户身份运行”相关的任何内容,但始终以管理员身份运行,这很容易。
好吧,老实说,另一方面,我认为这样的事情是不可能的,因为更新程序应用程序无法知道哪个特定用户启动了它。或者可以吗?我在这里缺少什么吗?
如果我是对的,那么不使用 My.Settings 而是使用 Windows 注册表来存储用户首选项是唯一的选择吗?
现在谢谢。