我想在客户端's机器上保存c#应用程序的用户数据

本文关键字:应用程序 保存 用户 数据 用户数 机器 客户端 | 更新日期: 2023-09-27 17:53:51

对于我的c# windows表单应用程序,我想在客户端机器上保留一些用户数据。我该怎么走?本地数据库,XML文件),哪一个是最安全的

我想在客户端's机器上保存c#应用程序的用户数据

我将使用App.config并使用ConfigurationManager访问设置。AppSettings类。

应用程序。配置

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <startup> 
        <supportedRuntime version="v4.0" sku=".NETFramework,Version=v4.5" />
    </startup>
  <appSettings>
    <add key="Setting1" value="true"/>
    <add key="Setting2" value="value"/>
  </appSettings>
</configuration>

使用以下

从应用程序访问设置
bool setting1 = Convert.ToBolean(ConfigurationManager.AppSettings["Setting1"]);
string setting2 = ConfigurationManager.AppSettings["Setting2"];

更新设置,创建一个静态助手方法

public static void UpdateAppSetting(string key, string value)
{
    var configuration = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None);
    configuration.AppSettings.Settings[key].Value = value;
    configuration.Save();
    ConfigurationManager.RefreshSection("appSettings");
}

查看下面的链接以获得更多示例。

https://msdn.microsoft.com/en-us/library/system.configuration.configurationmanager.appsettings (v = vs.110) . aspx

处理这个问题的内置方法是设置类。

在项目文件中甚至有一个"设置"选项卡,你可以为你的应用程序输入值。在运行时访问它们,如

        Width = Settings1.Default.Width;
        Height = Settings1.Default.Height;
        Top = Settings1.Default.Top;
        Left = Settings1.Default.Left;

Save()和Load()也可用

我使用的所有程序在启动和关闭时加载和保存设置的代码:

private void Window_Closing(object sender, CancelEventArgs e)
{
    SaveAppSettings();
}
private void LoadAppSettings()
{
    if (Properties.Settings.Default.LastWindowSize.Width > System.Windows.SystemParameters.WorkArea.Width)
        this.Width = System.Windows.SystemParameters.WorkArea.Width - 1; // stay within screen resolution
    else
        this.Width = Properties.Settings.Default.LastWindowSize.Width;
    if (Properties.Settings.Default.LastWindowSize.Height > System.Windows.SystemParameters.WorkArea.Height)
        this.Height = System.Windows.SystemParameters.WorkArea.Height - 1; // stay within screen resolution
    else
        this.Height = Properties.Settings.Default.LastWindowSize.Height;
    if (Properties.Settings.Default.LastWindowPos.X > 0) // keep it sane, otherwise window appears to disappear
        this.Left = Properties.Settings.Default.LastWindowPos.X;
    if(Properties.Settings.Default.LastWindowPos.Y > 0)
        this.Top = Properties.Settings.Default.LastWindowPos.Y;
}
private void SaveAppSettings()
{
    if (this.WindowState == WindowState.Normal)
    {
        Properties.Settings.Default.LastWindowPos = new System.Drawing.Point((int)this.Left, (int)this.Top);
        Properties.Settings.Default.LastWindowSize = new System.Drawing.Size((int)this.Width, (int)this.Height);
    }
    else
    {
        Properties.Settings.Default.LastWindowPos
           = new System.Drawing.Point((int)this.RestoreBounds.Left, (int)this.RestoreBounds.Top);
        Properties.Settings.Default.LastWindowSize
           = new System.Drawing.Size((int)this.RestoreBounds.Width, (int)this.RestoreBounds.Height);
    }
    Properties.Settings.Default.Save();
}

因为我使用VMWare Fusion,所以我做了一些合理的大小检查。如果融合窗口小于最后一个应用程序大小,您可能会遇到无法再适当调整应用程序大小的情况。这应该会给你一个做事的思路