引自免费微信小程序:皆我百晓生
为了确保RegardingIncomeVouchers.IncomeVoucherNumberArray
列表在窗体关闭后保留其值,你需要了解C#中的内存管理和对象生命周期。在这种情况下,由于RegardingIncomeVouchers.IncomeVoucherNumberArray
是静态成员,它将一直存在于程序的整个生命周期中,直到应用程序退出。这意味着只要你的应用程序没有结束,这个数组就会保持它的状态。
然而,如果你的应用程序重新启动,或者你在同一运行时环境中打开多个实例,每个实例都会有自己的regvenueWindow
窗口,并且它们可能会覆盖彼此对RegardingIncomeVouchers.IncomeVoucherNumberArray
的更改。为了解决这个问题,你可以考虑以下两种方法来持久化数据:
- 使用文件存储:
当窗体关闭时,将数组内容写入一个文件,然后在窗体加载时从文件中读取数据。以下是修改后的代码示例:
using System.IO;
using System.Text.Json;
// ...
internal static class RegardingIncomeVouchers
{
internal static List<string> IncomeVoucherNumberArray = new List<string>();
// 新增两个方法用于保存和加载数据到文件
public static void SaveData(string filePath)
{
string json = JsonSerializer.Serialize(IncomeVoucherNumberArray);
File.WriteAllText(filePath, json);
}
public static void LoadData(string filePath)
{
if (File.Exists(filePath))
{
string json = File.ReadAllText(filePath);
IncomeVoucherNumberArray = JsonSerializer.Deserialize<List<string>>(json);
}
}
}
public partial class revenueWindow : Form
{
private void revenueWindow_FormClosing(object sender, FormClosingEventArgs e)
{
// 在窗体关闭前保存数据到文件
string filePath = "IncomeVoucherNumbers.json";
RegardingIncomeVouchers.SaveData(filePath);
}
private void revenueWindow_Load(object sender, EventArgs e)
{
// 在窗体加载时从文件加载数据
string filePath = "IncomeVoucherNumbers.json";
RegardingIncomeVouchers.LoadData(filePath);
// 继续添加你的数据(如果需要)
RegardingIncomeVouchers.IncomeVoucherNumberArray.Add("4");
RegardingIncomeVouchers.IncomeVoucherNumberArray.Add("5");
RegardingIncomeVoucherNumberArray.Add("6");
}
}
- 使用数据库存储:
如果你的应用程序需要更复杂的数据管理,你可能想要考虑使用数据库来存储这些数据。这样可以让你在多用户或多实例环境中更好地共享和管理数据。这涉及到安装数据库、创建表结构以及编写相应的CRUD操作。对于初学者,SQLite是一个轻量级的数据库选项,可以直接在应用程序中使用。
这里提供的代码应该满足你的需求。如果你需要关于如何使用SQLite或其他数据库的进一步指导,请告诉我。