2017-04-30 46 views
0

Howdee所有,保存用户输入供以后使用C#

我有一个C#VSTO Excel插件,我的组织使用,以使各种选择提取数据到Excel中。用户界面是一个Windows窗体。有一个下拉框,用于输入带有可用参数的组合框,用户在那里选择输入来定义查询的参数。我在列表框中显示参数,以便用户可以选择他/她所选的内容。我已经有了一个能够保存参数输入的请求,因此用户可以快速回想,而不必一遍又一遍地输入相同的信息,但不确定最佳的方式。

基本上需要在用户请求时从列表框中存储第一个下拉框和与其关联的参数。正在创建一个文本文件,以保存到用户PC最好的方式来解决这个问题?我想创建一个隐藏的标签,将它们存储在Excel中,但是它仅限于该文件。我对C#比较新,所以不确定是否有更好的方式我不知道。

干杯, 瑞安

回答

1

正如你说你不想给他们限制在其相关的文件,我的做法很可能是这个保存到用户的AppData文件夹,并使用XML序列化。你可以在下面看到一个例子。

根据您选择的AppData文件夹,数据将位于C:\ Users \ $ user $ \ AppData \ Roaming或... \ Local中。有关更多信息,请参阅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); 
+0

感谢您的反馈,这是有道理的。感谢这个例子以及它一起去! – Clouse24