保存用户输入供以后使用 C#

Save User Inputs for Later Use C#

大家好,

我有一个 C# VSTO Excel 插件,我的组织使用它制作各种 select 离子以将数据拉入 Excel。用户界面是 windows 形式。有一个下拉框,它为组合框提供可用参数,用户 select 在其中输入定义查询的参数。我在列表框中显示参数,这样用户就可以 he/she selected。我有一个请求能够保存参数输入,这样用户就可以快速回忆起来,而不必一遍又一遍地输入相同的信息,但我不确定这样做的最佳方法。

基本上需要根据用户请求从列表框中存储第一个下拉框及其关联的参数。创建一个文本文件以保存到用户 PC 是解决此问题的最佳方法吗?我想创建一个隐藏的选项卡将它们存储在 Excel 中,但它仅限于该文件。我对 C# 比较陌生,所以不确定是否有更好的方法我不知道。

干杯, 瑞安

正如您所说,您不想将它们限制在它们的关联文件中,我的方法可能是将其保存到用户的 AppData 文件夹中,并使用 XML 序列化。您可以在下面查看示例。

数据将位于 C:\Users\$user$\AppData\Roaming 或 ...\Local 中,具体取决于您选择的 AppData 文件夹。有关详细信息,请参阅 this

序列化:

// this is just an example object, can do whatever you'd like here
var myObject = new MyObject()
{
    MyValue = "some data"
};

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\data.xml");

Directory.CreateDirectory(Path.GetDirectoryName(path));

var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Create))
{
    serializer.Serialize(fileStream, myobject);
}

反序列化:

string path = Path.Combine(
    Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), 
    "MyExcelAddIn\data.xml");

MyObject myObject;
var serializer = new XmlSerializer(typeof(MyObject));
using (var fileStream = new FileStream(path, FileMode.Open))
{
    myObject = (MyObject)serializer.Deserialize(fileStream);
}
MessageBox.Show(myObject.MyValue);