2017-04-30 47 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