在我的c#应用程序中,我有这个小形式,用于设置应用程序的参数。一旦我设置参数我的应用程序运行正常。当我重新启动应用程序时,参数形式的字段值将被重置。
如何在关闭和启动应用程序之间存储和恢复表单内容
答案 0 :(得分:4)
听起来你应该将这些配置值存储在App.config文件中(或.NET提供的其他配置管理器之一)。
然后,您可以围绕序列化和维护这些值来构建表单,而不是自定义。
......无需重新发明轮子。
答案 1 :(得分:3)
.NET框架提供的应用程序和用户设置对此非常有用:
应用程序设置功能 Windows Forms使创建变得容易, 存储和维护自定义应用程序 和客户端上的用户首选项 电脑。使用Windows窗体 应用程序设置,您可以存储 不仅仅是应用数据 数据库连接字符串,但也 用户特定的数据,例如用户 应用偏好。使用Visual 您可以使用Studio或自定义托管代码 创建新设置,从中读取 并将它们写入磁盘,将它们绑定到 表单上的属性,并进行验证 加载前的设置数据和 节省。
从MSDN上的Application Settings Overview主题开始。
答案 2 :(得分:1)
虽然有几种方法,但如果您正在处理适用于应用程序所有用户的“全局”应用程序设置,则可以创建app.config文件并将设置键添加到AppSettings部分。 app.config文件。
稍微棘手的部分是修改这些设置并让它们停留,因为默认情况下只需在配置文件的访问器中调用build就不会保存设置。您将需要使用ConfigurationManager类,并确保在保存内容后调用Refresh命令。
我花了一两天的时间才完成这件事,但我写了一篇关于它的博客文章here。
答案 3 :(得分:1)
听起来像是了解Settings in .NET
的绝佳机会设置可用于在不同的执行会话之间存储和检索数据,基本上有两种不同类型的设置;应用程序设置和用户设置。应用程序设置用于存储特定于应用程序的设置,用户用于存储用户首选项。
答案 4 :(得分:1)
我发现用于存储应用程序设置(用户能够更改)的最佳方法是使用IsolatedStorageFile类。以下是在WPF应用程序的App.xaml文件中使用独立存储的示例。这将使用用户创建的值填充Application.Properties字典。然后可以在应用程序中使用这些属性。
public partial class App : Application
{
string fileName = "App.txt";
private void Application_Startup(object sender, StartupEventArgs e)
{
// read Iso Storage file
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForDomain();
try
{
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Open, storage))
using (StreamReader reader = new StreamReader(stream))
{
while (!reader.EndOfStream)
{
// populate Application Properties
string[] keyValue = reader.ReadLine().Split(new char[] { ',' });
this.Properties[keyValue[0]] = keyValue[1];
}
}
}
catch (FileNotFoundException)
{
// Set default values. You would probably want to read these values from a config file
this.Properties["LocalServiceAddress"] = "http://localhost/myservice";
this.Properties["TranscodeServer"] = "http://localhost";
}
}
private void Application_Exit(object sender, ExitEventArgs e)
{
// Persist application-scope property to isolated storage
IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForDomain();
using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(fileName, FileMode.Create, storage))
using (StreamWriter writer = new StreamWriter(stream))
{
// Persist each application-scope property individually
foreach (string key in this.Properties.Keys)
{
writer.WriteLine("{0},{1}", key, this.Properties[key]);
}
}
}
}
答案 5 :(得分:0)
您需要在某处(例如注册表或文件)将它们序列化,然后在应用程序启动时读取它们。
答案 6 :(得分:0)
当应用程序关闭或更改设置时,您可以将参数序列化到磁盘(XML,纯文本,数据库或任何您喜欢的形式)。然后在启动期间重新加载它们。