保存在程序启动时加载的变量 (WFA) C#
Saving a variable that gets loaded on program startup (WFA) C#
要求用户输入他正在使用的设备上的序列号。然后程序将此序列号用于所有功能。这样做是为了让用户无需任何技术帮助即可轻松更换所述设备 - 只需在应用程序中输入新序列号即可。
但是,我的做法是,用户每次打开程序都需要输入序列号,有点繁琐。
有没有办法存储上次输入的序列号,以便下次运行程序时加载?
我检查过这个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);
}
我试过前面提到的link,然后这样保存:
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 这样仍然是空的。
任何关于如何使它比每次程序启动时都必须键入它更容易的提示或指南将不胜感激。如果那是我唯一的选择,我会采用硬编码序列号,然后在每次更换设备时更改代码。
硬编码序列号确实不是一种选择,尤其是当像 "saving a serial number" 这样的东西根本不是很复杂的时候(但就像所有事情一样,如果你愿意的话,它可以很复杂)。
非常简单的方法:
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);
}
}
它在启动时从文件中读取字节(如果文件存在)。
当用户更改序列号(并单击按钮保存)时,它将字节写入文件。
正如我所说,您可以根据自己的喜好使它变得简单或复杂,但这应该能让您继续前进。
要求用户输入他正在使用的设备上的序列号。然后程序将此序列号用于所有功能。这样做是为了让用户无需任何技术帮助即可轻松更换所述设备 - 只需在应用程序中输入新序列号即可。
但是,我的做法是,用户每次打开程序都需要输入序列号,有点繁琐。
有没有办法存储上次输入的序列号,以便下次运行程序时加载?
我检查过这个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);
}
我试过前面提到的link,然后这样保存:
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 这样仍然是空的。
任何关于如何使它比每次程序启动时都必须键入它更容易的提示或指南将不胜感激。如果那是我唯一的选择,我会采用硬编码序列号,然后在每次更换设备时更改代码。
硬编码序列号确实不是一种选择,尤其是当像 "saving a serial number" 这样的东西根本不是很复杂的时候(但就像所有事情一样,如果你愿意的话,它可以很复杂)。
非常简单的方法:
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);
}
}
它在启动时从文件中读取字节(如果文件存在)。 当用户更改序列号(并单击按钮保存)时,它将字节写入文件。
正如我所说,您可以根据自己的喜好使它变得简单或复杂,但这应该能让您继续前进。