保存在程序启动 (WFA) C# 时加载的变量

Posted

技术标签:

【中文标题】保存在程序启动 (WFA) C# 时加载的变量【英文标题】:Saving a variable that gets loaded on program startup (WFA) C# 【发布时间】:2016-02-25 23:42:23 【问题描述】:

要求用户在他正在使用的设备上输入序列号。然后程序将此序列号用于所有功能。这样做是为了让用户无需任何技术帮助即可轻松更换所述设备 - 只需在应用程序中输入新的序列号。

但是,按照我的做法,用户每次打开程序都需要输入序列号,有点繁琐。

有没有办法存储最后输入的序列号,以便下次运行程序时加载?

我已经检查了这个link。虽然看起来很有希望,但它并没有为我解决问题。我将在下面用我的代码进行解释。

这是要求用户输入序列号的代码:

        byte[] xbee  get; set; 
        var xbee_serienr = prop1_serienr.Text;
        xbee = new byte[xbee_serienr.Length / 2];

        for (var i = 0; i < xbee.Length; i++)
        
            xbee[i] = byte.Parse(xbee_serienr.Substring(i * 2, 2), NumberStyles.HexNumber);
        

我尝试了上述链接,并像这样保存它:

prop1_serienr    string     user    0013A20040A65E23

然后像这样在代码中使用它:

    prop1_serienr = Xbee.Properties.Settings.Default.prop1_serienr;
    //keep in mind I made the silly decision using Xbee as namespace and xbee as a variable

但是 prop1_serienr 这样仍然是空的。

任何关于如何使这比每次程序启动时都输入更容易的提示或指南将不胜感激。如果这是我唯一的选择,我将采用硬编码序列号,然后在每次更改设备时更改代码。

【问题讨论】:

【参考方案1】:

对序列号进行硬编码确实不是一种选择,尤其是当“保存序列号”之类的事情根本不是很复杂时(但就像所有事情一样,如果你愿意的话,它可能很复杂)。

非常简单的方法:

public partial class Form1 : Form

    private byte[] _xbee;
    public Form1()
    
        if (!File.Exists("serial.txt"))
        
            File.Create("serial.txt");
        
        else
        
            _xbee = File.ReadAllBytes("serial.txt");
        

        InitializeComponent();
    

    private void btnSaveSerial_Click(object sender, EventArgs e)
    
        byte[] xbee  get; set; 
        var xbee_serienr = prop1_serienr.Text;
        xbee = new byte[xbee_serienr.Length / 2];

        for (var i = 0; i < xbee.Length; i++)
        
            xbee[i] = byte.Parse(xbee_serienr.Substring(i * 2, 2), NumberStyles.HexNumber);
        

        _xbee = xbee;
        File.WriteAllBytes("serial.txt", xbee);
    

它在启动时从文件中读取字节(如果文件存在)。 当用户更改序列号(并单击按钮保存)时,它将字节写入文件。

正如我所说,您可以根据自己的喜好将其变得简单或复杂,但这应该会让您继续前进。

【讨论】:

这很好用,谢谢!由于在代码的不同部分使用了 xbee 变量,我不得不进行一些小的更改,但一旦我意识到这没问题。

以上是关于保存在程序启动 (WFA) C# 时加载的变量的主要内容,如果未能解决你的问题,请参考以下文章

隐藏或保护 .txt 保存数据 c#

C# WFA - 将耗时的工作委托给另一个线程

C#中怎么把选中的文件路径保存到程序的配置文件中

重新启动应用程序时不会加载 ArrayList

在程序 c# 开始时加载 JSON 数据

如何将变量保存到新的文本文件中,以便下次程序运行时加载这些变量?